小编Fra*_*lin的帖子

为什么 numpy 记录的内存视图是只读的?

为什么 Python 告诉我记录的内存视图是只读的?

>>> x = np.zeros(1, dtype='d,d,i')
>>> x
array([(0., 0., 0)], dtype=[('f0', '<f8'), ('f1', '<f8'), ('f2', '<i4')])
>>> memoryview(x).readonly
False
>>> memoryview(x[0]).readonly
True
Run Code Online (Sandbox Code Playgroud)

显然,x[0]不是只读的,因为

>>> x[0][0] += 1
>>> x[0]
(1., 0., 0)
Run Code Online (Sandbox Code Playgroud)

内存视图对于普通数组没有问题:

>>> y = np.zeros((3, 4))
>>> memoryview(y).readonly
False
>>> memoryview(y[0]).readonly
False
Run Code Online (Sandbox Code Playgroud)

同样,不推荐使用的人__array_info__知道它x[0]是读写的:

>>> x.__array_interface__['data']   # returns tuple (address, read-only)
(105553143159680, False)
>>> x[0].array_interface__['data']
(105553143159680, False)
Run Code Online (Sandbox Code Playgroud)

我的实际问题是 C 代码。幸运的是,我的所有问题也可以用纯 Python 显示。

我正在尝试用 C 代码读取和写入 numpy 记录,我只需要数据的地址。__array_interface__我可以使用它相应的 C-side找到数据的地址 …

python swig memoryview

5
推荐指数
0
解决办法
88
查看次数

标签 统计

memoryview ×1

python ×1

swig ×1