在 Python 中访问 memoryview 类型的数据缓冲区

Acessing data buffer of typed memoryview in Cython

我有一个函数需要 Cython 中的数组指针,例如签名

cdef void foo(DTYPE_t* x)

和一个接收类型化内存视图的函数,我想从中调用第一个函数,例如:

def bar(DTYPE_t[:,::1] X not None):
    foo(X[0])

自然连编译都不行。我已经尝试了几个小时来找出一种方法来访问内存视图下的数据指针,即 X.data.

有办法实现吗?遗憾的是我不能foo接受记忆观点。

解决方法就这么简单,挺尴尬的

&X[i,j]

即电话会变成

foo(&X[i,0])

顺便说一句,这也适用于旧式 numpy 数组,它们的初始化方式类似于

object[int, ndim=2, mode='strided'] X

PS:如果您想传递 C 数组,则需要 X[i][j],这同样适用于类型化的内存视图。

你想要这个:

foo(&X[0,0])