python - Cython:将内存 View 转换为 NumPy 数组

标签 python arrays numpy cython memoryview

如何在 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/

相关文章:

python - 不均匀采样角度值的二维插值/平滑

python - 带有 NaN 掩码的数据帧的加权平均值

python - 如何将单个 wheel 文件上传到 pypi 服务器?

python - 如何从 Python 打开 Excel 应用程序?

python - 使用插值和 alpha 将 imshow 保存为 pdf 时出现 Matplotlib 问题

python - 重启消耗可再填充迭代器的生成器

c - 在不动态分配内存的情况下在C中复制任意类型

c - 尝试创建一个对数组中所有值进行平方的函数。最后一个值出现奇怪的数字

c - 声明一个字符串数组并选择一个字符

python - 如何创建具有多个不同形状字段的 numpy 结构化数组?