因此,與numpy的陣列分配一個到另一個只是複製參考: 即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數組?是否有任何規則來決定何時在賦值時深度複製數組?
我不知道python,但它看起來像C++指針。您可以將1個內存空間分配給多個變量(如許多變量讀取相同的內存指針),而不是1個變量分配給多個內存空間(1個var讀取多個內存指針) – Vuwox 2015-03-24 23:17:39