仅分配rand_draw2 = rand_draw1
不会创建副本,它只是将名称绑定到已绑定到rand_draw2
的同一对象rand_draw1
:
>>> rand_draw2 = rand_draw1
>>> rand_draw2 is rand_draw1
True
相反,您需要显式复制 rand_draw1
,并将副本分配给rand_draw2
:
>>> rand_draw1 = np.random.rand(5, 4)
>>> rand_draw2 = rand_draw1.copy()
>>> rand_draw2[0:2] = np.random.rand(2, 4)
>>> rand_draw1
array([[ 0.08254004, 0.51848814, 0.69348487, 0.44053008],
[ 0.75273107, 0.64677024, 0.78397813, 0.12768647],
[ 0.37552669, 0.8365069 , 0.44490398, 0.3943413 ],
[ 0.27263619, 0.40379047, 0.43227555, 0.61552473],
[ 0.55214161, 0.21380748, 0.34122889, 0.44029075]])
>>> rand_draw2
array([[ 0.26229975, 0.02754367, 0.7989174 , 0.94619982],
[ 0.40869498, 0.01327566, 0.06437938, 0.94647506],
[ 0.37552669, 0.8365069 , 0.44490398, 0.3943413 ],
[ 0.27263619, 0.40379047, 0.43227555, 0.61552473],
[ 0.55214161, 0.21380748, 0.34122889, 0.44029075]])
有关Python 中名称如何工作的很好的解释,请参见此处。