代码之家  ›  专栏  ›  技术社区  ›  Karn Kumar

为什么原始的numpy数组在更改从它创建的另一个数组时会被更改?

  •  0
  • Karn Kumar  · 技术社区  · 6 年前

    r 当我创建另一个数组时 r2 离开它,打开新的阵列 r2级 它也改变了原来的数组 r

    我已经搜索过类似的问题,但没有找到任何令人满意的答案,所以请考虑提出一个合适的答案。

    原始数组:

    >>> r
    array([[ 0,  1,  2,  3,  4,  5],
           [ 6,  7,  8,  9, 10, 11],
           [12, 13, 14, 15, 16, 17],
           [18, 19, 20, 21, 22, 23],
           [24, 25, 26, 27, 28, 29],
           [30, 31, 32, 33, 34, 35]])
    

    另一个原始数组的numpy数组 r2级 具体如下:

    >>> r2 = r[:3, :3]
    >>> r2
    array([[ 0,  1,  2],
           [ 6,  7,  8],
           [12, 13, 14]])
    

    r2级 归零

    >>> r2[:]  = 0
    >>> r2
    array([[0, 0, 0],
           [0, 0, 0],
           [0, 0, 0]])
    

    所以,当我看到原始数组时,它看起来也发生了变化:

    数组在新数组中的chanin之后更改:

    >>> r
    array([[ 0,  0,  0,  3,  4,  5],
           [ 0,  0,  0,  9, 10, 11],
           [ 0,  0,  0, 15, 16, 17],
           [18, 19, 20, 21, 22, 23],
           [24, 25, 26, 27, 28, 29],
           [30, 30, 30, 30, 30, 30]])
    

    各位,新年快乐!

    1 回复  |  直到 6 年前
        1
  •  1
  •   javan.rajpopat    6 年前

    解释

    r2 = r[:3, :3] 
    

    x = np.array([1, 2, 3])
    y = x
    z = np.copy(x)
    
    x[0] = 10
    x[0] == y[0]
    True
    x[0] == z[0]
    False
    

    从中了解更多信息,

    https://het.as.utexas.edu/HET/Software/Numpy/reference/generated/numpy.copy.html