因此,使用numpy数组将一个分配给另一个只会复制引用:
即:import numpy as np
x = np.array([5,8])
y = x
y += 1
x
Out: array([6, 9])
如果我需要一个深度复制,则应使用 x.copy()
。当从更高维数组中获取视图时,情况也是如此,例如:
A=np.array([[4,10],[8,1]])
b=A[:,1]
b+=1
A
Out: array([[ 4, 11],
[ 8, 2]])
反之亦然(继续上面的内容):
A[:,1]=b
b
Out: array([11, 2])
b+=1
A
Out: array([[ 4, 12],
[ 8, 3]])
目前为止,一切都稳定运作。但现在如果我继续执行:
A[:,0] = b
A
Out: array([[12, 12],
[ 3, 3]])
b
Out: array([12, 3])
b+=1
A
Out: array([[12, 13],
[ 3, 4]])
我不明白的是为什么第一列保持不变,而其他列不是?为什么第二列继续指向b数组?是否有规则来决定何时对数组进行深拷贝赋值?