首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PyArrayObject*转换为int*失败

将PyArrayObject*转换为int*失败
EN

Stack Overflow用户
提问于 2015-10-08 16:33:22
回答 1查看 336关注 0票数 0

我有个非常快速的问题。任何人都可以解释为什么当我将一个Numpy整数数组传递给我的C代码时,为什么我不能检索正确的值?我的猜测是,C中的int类型与默认的Numpy不一样,但坦率地说,我在在线文档中迷路了。这是我的案子:

在Python模块中,我有一个字典

代码语言:javascript
复制
from numpy import * 

pars = {...,
        'ICs' : array([0,1,2])
       }

然后,我将这个字典传递给我的C函数

代码语言:javascript
复制
#include <Python.h>
#include <numpy/arrayobject.h>

...
...
int main(){
    int i, *ics;

    //That is the assignment according to the manual 
    ics = (int*)((PyArrayObject*)PyDict_GetItemString(pardict,"ICs"))->data);
    for(i=0;i<9;i++) printf("\ni=%d\t-->%d",i,ics[i]);   
    return 0;     
}

当我被处决时,我得到的是:

代码语言:javascript
复制
i=0-->0
i=1-->0
i=2-->1
i=3-->0
i=4-->2
i=5-->0
i=6-->9102
i=7-->-289
i=8-->2910103
i=9-->294921

我本来希望看到我的三个整数将被打印为i<3。如有任何澄清,将不胜感激!

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-09 05:50:41

您需要使用适当的函数来访问基础数组,即PyArray_BYTES,如http://docs.scipy.org/doc/numpy/reference/c-api.array.html中所述。

不过,请注意,这使您可以直接访问缓冲区,而无需考虑进度!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33021326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档