使用数组副本时,我注意到了一些意外行为。例如,我有一个NumPy数组(a):
import numpy as np
a = np.random.randint(9, size=(4,4))
输出:
array([[3, 4, 4, 3],
[0, 0, 4, 2],
[6, 3, 1, 6],
[1, 5, 5, 5]])
然后,我制作了这个数组的副本(b)来操作副本并保持原始原样:
b = a #copy of the array
b[b == 2] = 0 #manipulating the copy
但是,现在看来原始版本和副本都已更改:
b = array([[3, 4, 4, 3],
[0, 0, 4, 0],
[6, 3, 1, 6],
[1, 5, 5, 5]])
a = array([[3, 4, 4, 3],
[0, 0, 4, 0],
[6, 3, 1, 6],
[1, 5, 5, 5]])
我不明白为什么在仅将操作应用于副本时更改原始数组。这与我对Matlab或R的期望完全不同。有没有办法防止这种行为?