Cython Numpy数组形状,元组赋值

9

我将使用这个习语

 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个回答

5

我认为你是正确的,处理这个问题的简单方法就是:

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

我不知道还有其他方法来做这件事情,而这是我自己在代码中使用的惯例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接