alla seguente domanda è venuto nel mio corso di ieri Estratto:righe/colonne di una matrice in variabili distinte
Supponiamo che io abbia una matrice M = rand(3, 10)
che esce di un calcolo, ad esempio, un risolutore ODE.
In Python, si può fare
x, y, z = M
per estrarre i file di M
nelle tre variabili, per esempio per tracciare con matplotlib
.
In Julia potremmo fare
M = M' # transpose
x = M[:, 1]
y = M[:, 2]
z = M[:, 3]
C'è un modo migliore per fare questa estrazione? Sarebbe bello essere in grado di scrivere almeno (avvicinandosi Python)
x, y, z = columns(M)
o
x, y, z = rows(M)
Un modo potrebbe essere
columns(M) = [ M[:,i] for i in 1:size(M, 2) ]
ma questo farà una copia costoso tutti i dati
Per evitare questo, è necessario un nuovo tipo di iteratore, ColumnIterator
, che restituisce le fette? Sarebbe utile per qualcosa di diverso dall'usare questa bella sintassi?
Perché non 'colonne (M) = [slice (M ,: , i) per i in 1: size (M, 2)] '? Cosa c'è di sbagliato in questa sintassi? –
Senza copiare: colonne (M) = [sub (M,:, i) per i in 1: dimensione (M, 2)] –
Sì, dovrebbe funzionare, grazie! - Non sono sicuro del motivo per cui non ci ho pensato. –