【问题标题】:Cython pyx modification for multidimensional numpy input with memory views带有内存视图的多维 numpy 输入的 Cython pyx 修改
【发布时间】:2021-01-21 17:08:49
【问题描述】:

我当前从 c++ 类包装的函数的输入是一维 numpy 数组,例如 func(np.array([1,2,3])) 我在 pyx 中的 cython 描述如下所示:

def func(self, double[::1]  arr):
        return self.c_obj.update_set_point(&arr[0])

但是,如果我的输入数组看起来像 np.array([[1],[2],[3]]),我很困惑如何更改它

以上述二维数组为例,任何人都可以概括地描述 pyx 描述对于多维数组输入应该如何变化吗?

【问题讨论】:

    标签: python numpy cython memoryview


    【解决方案1】:

    如果你知道你的数组是二维的,那么 memoryview 的语法就是 double[:, ::1] 等等。

    如果你想在一个只有在运行时知道的维数的数组上进行内存视图,那么你就不走运了。可能唯一的方法是保存形状,展平,处理展平的数组,并在返回时恢复形状。

    【讨论】:

    • 是3维还是4维呢?
    • 相同:展平、循环、恢复形状。
    猜你喜欢
    • 2014-01-27
    • 2015-03-31
    • 1970-01-01
    • 2014-01-25
    • 2014-11-29
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多