使用切片的数组分配

月亮佐伊

当我使用切片分配数组时,发生了一些奇怪的事情。源代码如下:

import numpy as np
a = np.array([1,2,3,4]).reshape(2,2)
b = np.array([5,6,7,8]).reshape(2,2)
print(id(a))
print(id(b))
b = a[:]
b[1,1] = 10
print(b is a)
print(id(a))
print(id(b))
print(a)
print(b)

结果为:

在此处输入图片说明

根据该结果,在IDb一个是阵列分配之后不同,但是当我改变的值b,在值一个也发生变化。为什么是这样?

使用Sublime Text,Python 3.4.3。

hpaulj

使用列表b=a[:]制作的副本a更改b不会影响a其值。

但是,使用numpy数组时,此操作将使viewb是一个新对象,但它共享基础数据缓冲区。值的更改b将影响a

使用b=b.copy()是您想要一个真实的副本。

https://docs.scipy.org/doc/numpy-dev/user/quickstart.html#copies-and-views

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章