我有一本书上写着,“重要的是要知道什么时候我们在处理共享数组 View ,什么时候我们有一个 数组数据的副本。”,但是这本书从未具体说明这两件事是什么。
谁能给出一个非常简单的解释什么是共享数组 View ,什么是数组数据的副本?和区别?有人可以用一个简单的比喻来解释吗?谢谢!
最佳答案
一种检查方法是使用 numpy 的 may_share_memory
:
In [11]: a = np.array([1, 2, 3])
In [12]: b = a[0:2]
In [13]: c = a.copy()
In [14]: np.may_share_memory(a, b)
Out[14]: True
In [15]: np.may_share_memory(a, c)
Out[15]: False
In [16]: np.may_share_memory(b, c)
Out[16]: False
这很重要,因为分配给副本不会影响原始数组,而更改 View 会:
In [21]: b[1] = 7
In [22]: a
Out[22]: array([1, 7, 3])
In [23]: c[1] = 11
In [24]: a
Out[24]: array([1, 7, 3])
In [25]: c
Out[25]: array([ 1, 11, 3])
关于python - 共享数组 View 和数组数据副本的定义和区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947210/