为什么numpy对于数组切片的行为有所不同?

时间:2018-09-21 14:59:46

标签: python arrays numpy scipy slice

当我在切片数组时偶然发现了这个奇怪的东西时,我正在学习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.]])

0 个答案:

没有答案