手册
目录
数组的副本和视图之间的主要区别在于,副本是一个新数组,而视图只是原始数组的视图。
副本拥有数据,对副本所做的任何更改都不会影响原始数组,对原始数组所做的任何更改也不会影响副本。
视图不拥有数据,对视图所做的任何更改都会影响原始数组,对原始数组所做的任何更改都会影响视图。
制作副本,更改原始数组,然后显示两个数组:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.copy() arr[0] = 42 print(arr) print(x)
提示:副本不应受到对原始数组所做的更改的影响。
创建视图,更改原始数组并显示两个数组:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.view() arr[0] = 42 print(arr) print(x)
视图应该受到对原始数组所做的更改的影响。
创建视图、更改视图并显示两个数组:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.view() x[0] = 31 print(arr) print(x)
提示:原始数组应该受到对视图所做的更改的影响。
如上所述,副本拥有数据,而视图不拥有数据,但是我们如何检查这一点呢?
每个 NumPy 数组都有一个属性 base,如果数组拥有数据,则返回 None。
否则,base 属性将引用原始对象。
打印 base 属性的值以检查数组是否拥有其数据:
import numpy as np arr = np.array([1, 2, 3, 4, 5]) x = arr.copy() y = arr.view() print(x.base) print(y.base)
提示:副本返回 None。视图返回原始数组。
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习