新彩天欢迎您!
幻海优品

Python NumPy Array(数组) copy vs view

1、copy 和 view的区别

copy和view之间的主要区别是copy是一个新数组,而该view只是原始数组的view。

copy拥有数据,对copy所做的任何更改都不会影响原始数组,对原始数组所做的任何更改也不会影响copy。

该view不拥有数据,对该view所做的任何更改都会影响原始数组,而对原始数组所做的任何更改都会影响该view。

2、copy

例如:

制作副本,更改原始数组,然后显示两个数组:

import numpy as nparr = np.array([1, 2, 3, 4, 5])x = arr.copy()arr[0] = 42print(arr)print(x)

副本不应受到对原始阵列所做更改的影响。

3、view

例如:

进行查看,更改原始数组,然后显示两个数组:

import numpy as nparr = np.array([1, 2, 3, 4, 5])x = arr.view()arr[0] = 42print(arr)print(x)

视图应该受到对原始数组所做更改的影响。

在VIEW中进行更改:

例如:

创建view,更改view,并显示两个数组:

import numpy as nparr = np.array([1, 2, 3, 4, 5])x = arr.view()x[0] = 31print(arr)print(x)

原始数组应该受到对view所做更改的影响。

4、判断数组是否拥有数据

每个NumPy数组都具有属性base,如果该数组拥有数据,则该属性返回None

否则,base属性引用原始对象。

例如:

打印base属性的值以检查数组是否拥有其数据:

import numpy as nparr = np.array([1, 2, 3, 4, 5])x = arr.copy()y = arr.view()print(x.base)print(y.base)

copy返回None
view返回原始数组。

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除