我有一个非常快速的问题。任何人都可以解释我为什么当我将Numpy整数数组传递给我的C代码然后我无法检索正确的值?我的猜测是C中的int
类型与默认的Numpy不一样,但我坦率地迷失在在线文档中。这是我的情况:
在Python模块中我有一个字典
from numpy import *
pars = {...,
'ICs' : array([0,1,2])
}
然后我把这个字典传递给我的C函数
#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;
}
然后在执行时,我得到的是:
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
。任何澄清将不胜感激!
提前致谢!
答案 0 :(得分:0)
您需要使用正确的函数来访问底层数组,即PyArray_BYTES
,如http://docs.scipy.org/doc/numpy/reference/c-api.array.html中所述。
请注意,这样可以直接访问缓冲区,而无需考虑步幅!