【发布时间】:2016-10-19 10:07:45
【问题描述】:
当我使用切片进行数组赋值时,发生了一些奇怪的事情。源码如下:
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)
结果如下:
从结果来看,b和a的id在数组赋值后是不同的,但是当我改变的值时b,a中的值也发生了变化。这是为什么呢?
使用 Sublime Text,Python 3.4.3。
【问题讨论】:
-
那个链接是关于列表的。这个问题是关于
numpy数组的。 -
a[:]使view不是副本。 -
@hpaulj 谢谢。你说的对。 Numpy 数组与列表不同。
-
我删除了
duplicates因为这是关于数组视图 v 副本,而不是关于列表副本和深度副本。 stackoverflow.com/questions/2612802/…。numpy数组不是列表