当我在切片数组时偶然发现了这个奇怪的东西时,我正在学习numpy。 一个创建其他参考值
>>> x = np.ones((3,3))
>>> x
array([[ 1., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
#last column is repeated
>>> y=x[:,[0,1,2,2]]
>>> y
array([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
>>> x[0,0]=999 # change element in x
>>> x
array([[ 999., 1., 1.],
[ 1., 1., 1.],
[ 1., 1., 1.]])
>>> y # its not changed!
array([[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
但这实际上会创建一个引用
>>> x = np.ones((3,3))
>>> y = x[:2,:2] # view of upper left piece
>>> x[0,0] = 999
>>> x
array([[ 999., 1., 1.], #here value has changed in X
[ 1., 1., 1.],
[ 1., 1., 1.]])
>>> y
array([[ 999., 1.], # y also changed!
[ 1., 1.]])