将整数数组从numpy传递给C函数时,int
的正确类型是什么?如果C函数需要一个普通int
数组,那么:
A = np.array([1,2,3])
似乎不正确,因为它可以生成基本为np.int32_t
s的long int
类型数组?
这是正确的形式吗?
A = np.array([1,2,3], np.dtype("i"))
当C期望long int
时,我想避免意外传递像int
这样的内容。我写的所有C代码都应该在numpy数组中使用long int
类型吗?
UPDATE 举一个具体的例子,如果Cython函数是:
cpdef int[:] test_func(int[:] arr, int[:] result):
cdef int i = 0
for i in xrange(arr.shape[0]):
result[i] = arr[i] + 1
return result
然后这似乎是正确的:
import numpy as np
input = np.array([1,2,3], dtype=np.dtype("i"))
result = np.empty(input.shape[0], dtype=np.dtype("i"))
test.test_func(input, result)
但如果您将dtype=np.dtype("i")
替换为dtype=int
,则会抱怨:
ValueError: Buffer dtype mismatch, expected 'int' but got 'long'