威凡网全力打造:网页编程、软件开发编程、平面设计、服务器端开发、操作系统等在线学习平台!学编程,上威凡网!
python教程>> python基础 python进阶 python高级 python技巧
当前位置:首页 > python教程 > python进阶
上一节 下一节
 NumPy 数组副本 vs 视图
  • numpy 数据类型

副本和视图之间的区别

副本和数组视图之间的主要区别在于副本是一个新数组,而这个视图只是原始数组的视图。

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

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

副本:

实例

进行复制,更改原始数组并显示两个数组:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 61

print(arr) 
print(x)

运行实例

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

视图:

实例

创建视图,更改原始数组,然后显示两个数组:

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 61

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,如果该数组拥有数据,则这个 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。

视图返回原始数组。

  • numpy 数据类型

申明:本教程内容由威凡网编辑整理并提供IT程序员分享学习,如文中有侵权行为,请与站长联系(QQ:254677821)!
上一节 下一节
相关教程  
其他教程  
python基础
python进阶
python高级
python技巧

违法和不良信息举报中心】邮箱:254677821@qq.com
Copyright©威凡网 版权所有 苏ICP备2023020142号
站长QQ:254677821