Python的Numpy的Array的副本(copy)和视图(view)

操作和修改数组时,他们的数据有时被复制到一个新的数组中有时候没有,这很容易让人误解。

下面举三个例子:

1.No copy at all (一点也没有复制)

import numpy as np

a = np.arange(12)

b = a  #并没有新的对象被创建,a和b只是相同ndarray对象的两个名字而已,下面用id()来验证一下

print(id(a),id(b))


可见a和b指向同一个数据对象。

2.View or  Shallow Copy

c = a.view()    #method of numpy.ndarry instance  numpy.ndarry实例的方法


以下可见c = a.view()创建了一个新的对象,但是这两个对象共享相同的数据。


如上所见,对象c和a都可以对数据的数值进行修改,但是c不能对shape属性进行修改。

另外切片数据也会返回“视图”对象。




s[:]是s的一个视图

3.Deep Copy(深度复制)

d = a.copy()    #a new array object with new data is created



本文来自https://docs.scipy.org/doc/numpy-dev/user/quickstart.html开源社区,里面有完善的文档,取之不尽的资源。大家可以多去访问开源社区。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值