将numpy数组转换为MemoryView对象

4
我正在尝试将一个numpy数组转换成MemoryView对象,因为我需要在两个程序之间进行通信。其中一个只能处理NumPy数组,而另一个只能处理MemoryView对象。
从MemoryView转换为numpy数组很容易,只需执行以下操作:
import numpy as np
MyNumpyArray=np.array(MyMemoryView)

但是如何将numpy数组转换为MemoryView呢?

我在这里找到了https://docs.python.org/3/c-api/memoryview.html,其中有一个PyMemoryView_FromObject(PyObject *obj)函数,但我不知道如何在没有示例的情况下调用它。

谢谢!


另一个程序是C程序吗?如果是Python,你可以直接使用memoryview(np.array(...)) - alkasm
@AlexanderReynolds 我认为是的,我正在与GUI交互,但我认为它是基于C的。你和Grr的解决方案都非常好!奇怪的是我在网上找不到这个简单的解决方案.. - ThaNoob
2个回答

9

memoryview是内置类型之一,可以简单地调用:

arr = np.random.rand(5,4)
view = memoryview(arr)
view
<memory at 0x12699c318>

同时,view[i] 可以用于索引 memoryview 对象。 - alkasm

4
此外,除了已经接受的答案提供了另一种从Numpy数组中获取memoryview的简单方法之外:

在线尝试!

a = np.arange(1, 9)
view = a.data
print(type(view)) # <class 'memoryview'>

换句话说,数组变量的.data属性确切地给出了memoryview

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接