在Python中,我可以通過多重情感交換來交換2個變量;它的工作原理也與清單:Numpy中的行交換
l1,l2=[1,2,3],[4,5,6]
l1,l2=l2,l1
print(l1,l2)
>>> [4, 5, 6] [1, 2, 3]
但是,當我想換2行的numpy的陣列(例如在高斯算法),它失敗:
import numpy as np
a3=np.array([[1,2,3],[4,5,6]])
print(a3)
a3[0,:],a3[1,:]=a3[1,:],a3[0,:]
print(a3)
>>> [[1 2 3]
[4 5 6]]
[[4 5 6]
[4 5 6]]
我認爲,對於一個奇怪的原因,這兩列現在指向相同的價值觀;但事實並非如此,因爲a3[0,0]=5
之前的行改變了a3 [0,0]而不是a3 [1,0]。
我發現如何解決這個問題:例如a3[0,:],a3[1,:]=a3[1,:].copy(),a3[0,:].copy()
的作品。但任何人都可以解釋爲什麼與多個情感交換失敗與numpy行?我的問題涉及Python和Numpy的基礎工作。
請參閱[這個問題的答案](http://stackoverflow.com/a/14933939/1600898)的解釋。 – user4815162342
好的,謝謝,這個問題不是在可能的重複列表中自動提出的。 – JPG
沒問題 - 我知道的唯一原因是因爲我回答了。 – user4815162342