die folgende Frage in meinem Kurs gestern kam:Extract Zeilen/Spalten einer Matrix in einzelne Variablen
nehme ich an eine Matrix M = rand(3, 10)
haben, die aus einer Berechnung kommt, z.B. ein ODE-Löser.
In Python können Sie
x, y, z = M
tun, um die Reihen von M
in die drei Variablen zu extrahieren, z.B. zum Plotten mit matplotlib
.
In Julia konnten wir
M = M' # transpose
x = M[:, 1]
y = M[:, 2]
z = M[:, 3]
Gibt es tun ein schöner Weg, um diese Extraktion zu tun? Es wäre schön, der Lage sein, zumindest (annähernd Python) würde
x, y, z = columns(M)
oder
x, y, z = rows(M)
Ein Weg
columns(M) = [ M[:,i] for i in 1:size(M, 2) ]
sein zu schreiben, aber das wird eine teure Kopie machen von alle Daten.
Um dies zu vermeiden, benötigen wir einen neuen Iteratortyp, ColumnIterator
, der Segmente zurückgibt? Wäre das für etwas anderes nützlich, als diese nette Syntax zu verwenden?
Warum nicht 'Spalten (M) = [Scheibe (M ,: , i) für i in 1: Größe (M, 2)] '? Was ist falsch an dieser Syntax? –
Ohne zu kopieren: Spalten (M) = [sub (M,:, i) für i in 1: Größe (M, 2)] –
Ja, das sollte funktionieren, danke! - Ich bin mir nicht sicher, warum ich nicht daran gedacht habe. –