如何在 cython 中将类型化的内存 View 转换为 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
复制与否没有那么决定性。我在这方面找不到任何帮助。
最佳答案
您应该能够直接在 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 扩展。
关于python - Cython:将内存 View 转换为 NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978377/