Cython:将内存视图转换为NumPy数组

2024-05-19 21:14:51 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在cython中将类型化的memoryview转换为NumPy数组?医生们

cimport numpy as np
import numpy as np

numpy_array = np.asarray(<np.int32_t[:10, :10]> my_pointer)

我拿这个做我的案子

np.asarray(<np.float_t[:, :]> my_memview)

使用这个编译器告诉我:

Can only create cython.array from pointer or array

抄袭或不抄袭都没有那么决定性。我找不到任何帮助。


Tags: numpymyasnp数组array中将cython
1条回答
网友
1楼 · 发布于 2024-05-19 21:14:51

您应该能够直接在memoryview本身上使用np.asarray,所以如下所示:

np.asarray(my_memview)

应该有用。例如,如果cython源文件包含以下内容:

import numpy as np
cimport numpy as np
def test(double[:,:] x):
    print type(x)
    print type(np.asarray(x))

然后在编译之后,您应该能够从python端执行以下操作:

a = np.random.normal(size=(5,5))
test(a)

产生以下输出:

<type '_cython_magic_0182fca918bfa3618c3553e51b13e8ba._memoryviewslice'>
<type 'numpy.ndarray'>

注意:我正在使用IPython的cythonmagic扩展。

相关问题 更多 >