2

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

cdef void foo(DTYPE_t* x)

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

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

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

有没有办法做到这一点?可悲的是,我不能熟练foo地接受记忆观点。

4

2 回答 2

3

你要这个:

foo(&X[0,0])
于 2015-02-20T19:49:21.280 回答
1

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

&X[i,j]

即通话将变为

foo(&X[i,0])

顺便说一句,它也适用于旧式 numpy 数组,它们的初始化如下

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

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

于 2015-02-19T16:23:21.687 回答