我有个非常快速的问题。任何人都可以解释为什么当我将一个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。如有任何澄清,将不胜感激!
提前感谢!
发布于 2015-10-09 05:50:41
您需要使用适当的函数来访问基础数组,即PyArray_BYTES,如http://docs.scipy.org/doc/numpy/reference/c-api.array.html中所述。
不过,请注意,这使您可以直接访问缓冲区,而无需考虑进度!
https://stackoverflow.com/questions/33021326
复制相似问题