emb*_*ert 17 python arrays numpy cython memoryview
如何在cython中将类型化的内存视图转换为NumPy数组?文档有
cimport numpy as np
import numpy as np
numpy_array = np.asarray(<np.int32_t[:10, :10]> my_pointer)
Run Code Online (Sandbox Code Playgroud)
我把它当作我的情况
np.asarray(<np.float_t[:, :]> my_memview)
Run Code Online (Sandbox Code Playgroud)
使用这个编译器告诉我:
Can only create cython.array from pointer or array
Run Code Online (Sandbox Code Playgroud)
复制与否并非如此具有决定性.我找不到任何帮助.
Jos*_*del 25
您应该只能np.asarray直接在memoryview本身上使用,所以类似于:
np.asarray(my_memview)
Run Code Online (Sandbox Code Playgroud)
应该管用.例如,如果您的cython源文件包含以下内容:
import numpy as np
cimport numpy as np
def test(double[:,:] x):
print type(x)
print type(np.asarray(x))
Run Code Online (Sandbox Code Playgroud)
然后在编译之后,您应该能够从python端执行以下操作:
a = np.random.normal(size=(5,5))
test(a)
Run Code Online (Sandbox Code Playgroud)
其中产生以下输出:
<type '_cython_magic_0182fca918bfa3618c3553e51b13e8ba._memoryviewslice'>
<type 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)
注意:我正在使用IPython的cythonmagic扩展.
| 归档时间: |
|
| 查看次数: |
9524 次 |
| 最近记录: |