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开源社区,里面有完善的文档,取之不尽的资源。大家可以多去访问开源社区。

阅读更多
个人分类: Scipy
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭