In Python kann ich 2 Variablen durch mehrere Affektation austauschen; es funktioniert auch mit Listen:Zeilenwechsel in Numpy
l1,l2=[1,2,3],[4,5,6]
l1,l2=l2,l1
print(l1,l2)
>>> [4, 5, 6] [1, 2, 3]
Aber wenn ich 2 Zeilen eines numpy Array austauschen möchten (zum Beispiel in dem Gauß-Algorithmus), scheitert es:
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]]
Ich dachte, dass für eine seltsamer Grund, die beiden Spalten zeigten jetzt auf die gleichen Werte; aber das ist nicht der Fall, da nach den vorhergehenden Zeilen a3 [0,0] ändert, aber nicht a3 [1,0].
Ich habe herausgefunden, wie mit diesem Problem zu tun: zum Beispiel a3[0,:],a3[1,:]=a3[1,:].copy(),a3[0,:].copy()
funktioniert. Aber kann jemand erklären, warum der Austausch mit mehreren Affekten mit numpigen Reihen scheitert? Meine Fragen betreffen die grundlegende Arbeit von Python und Numpy.
Bitte finden Sie [die Antwort auf diese Frage] (http://stackoverflow.com/a/14933939/1600898) für die Erklärung. – user4815162342
Okay, danke, diese Frage wurde nicht automatisch in der Liste der möglichen Duplikate vorgeschlagen. – JPG
Kein Problem - der einzige Grund, warum ich davon weiß, ist, weil ich darauf geantwortet habe. – user4815162342