【问题标题】:Cython numpy array shape, tuple assignmentsCython numpy 数组形状,元组分配
【发布时间】:2012-11-06 02:15:16
【问题描述】:

我用成语

 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]?)

【问题讨论】:

    标签: python numpy cython


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-11-12
      • 2018-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-12
      • 2019-10-20
      • 2021-02-22
      相关资源
      最近更新 更多