Cython numpy数组形状,元组赋值

时间:2012-11-06 02:15:16

标签: python numpy cython

我使用成语

 size_x, size_y, size_z = some_array.shape
在处理numpy数组时经常会出现这种情况。当有问题的数组有类型时,同样的事情在Cython中似乎不起作用,例如

 def someFunc(np.ndarray[np.float32_t, ndim=2] arr):
      sx, sy = arr.shape

我们最终会遇到像

这样的编译错误
  Cannot convert 'npy_intp *' to Python object

这可能是“shape”转换为C数组(为了更快访问)的结果,因此它不再是元组。

即使在Cython中也能以某种方式提取这个元组吗? (或者我应该坚持使用sx, sy = arr.shape[0], arr.shape[1]?)

1 个答案:

答案 0 :(得分:4)

我相信你是正确的,处理这个的直接方式是:

cdef int sx, sy
sx = arr.shape[0]
sy = arr.shape[1]

我不知道另一种方法,这是我在自己的代码中使用的约定。