当我使用切片分配数组时,发生了一些奇怪的事情。源代码如下:
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)
结果为:
根据该结果,在ID的b和一个是阵列分配之后不同,但是当我改变的值b,在值一个也发生变化。为什么是这样?
使用Sublime Text,Python 3.4.3。
使用列表b=a[:]
制作的副本a
。更改b
不会影响a
其值。
但是,使用numpy
数组时,此操作将使view
。b
是一个新对象,但它共享基础数据缓冲区。值的更改b
将影响a
。
使用b=b.copy()
是您想要一个真实的副本。
https://docs.scipy.org/doc/numpy-dev/user/quickstart.html#copies-and-views
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句