在处理数组的副本时,我注意到一些意外的行为。例如,我有一个NumPy数组(a):
import numpy as np
a = np.random.randint(9, size=(4,4))
输出:
^{pr2}$然后,我复制这个数组(b)来操作副本并保持原始的完整性:
^{3}$但是,原件和副本现在似乎都已更改:
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中所期望的完全不同。有没有一种方法可以防止这种行为?在
使用
b = a
只复制对象的引用,而不是对象本身。看看这个copy函数。简而言之,你必须做,b = a.copy()
相关问题 更多 >
编程相关推荐