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

Python Cython:将内存视图转换为NumPy数组,python,arrays,numpy,cython,memoryview,Python,Arrays,Numpy,Cython,Memoryview,如何在cython中将类型化的memoryview转换为NumPy数组?这些文件 cimport numpy as np import numpy as np numpy_array = np.asarray(<np.int32_t[:10, :10]> my_pointer) 复制与否并不那么重要。在这方面我找不到任何帮助。您应该能够直接在memoryview本身上使用np.asarray,因此类似于: np.asarray(my_memview) 应该有用。例如,如果cyt

如何在cython中将类型化的memoryview转换为NumPy数组?这些文件

cimport numpy as np
import numpy as np

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

复制与否并不那么重要。在这方面我找不到任何帮助。

您应该能够直接在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扩展。

可能太简单了。。现在一切都好了。你能查一下我的电话号码吗?我不敢扩展这个,这对结构类型不起作用吗?它返回“TypeError:应为可读缓冲区对象”
a = np.random.normal(size=(5,5))
test(a)
<type '_cython_magic_0182fca918bfa3618c3553e51b13e8ba._memoryviewslice'>
<type 'numpy.ndarray'>