Python Cython:将内存视图转换为NumPy数组
如何在cython中将类型化的memoryview转换为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
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'>