2017-10-30 4 views
1

sagen, dass ich 4x4 mehrdimensionales Array A haben:Julia: Wie in einer mehrdimensionalen Matrix Zeile für Zeile iterieren

A = collect(reshape(1:16, 4, 4)) 
4×4 Array{Int64,2}: 
1 5 9 13 
2 6 10 14 
3 7 11 15 
4 8 12 16 

und ich möchte zeilenlaufen (dh [1, 5, 9, 13] zuerst, dann [2, 6, 10, 14], dann .. .).

Wie mache ich das?

`for row in 1:size(A, 1) 
    println(A[row, :]) 
    # do something 
end` 

aber ich frage mich, ob es eine „pythonic“ war Art und Weise tun: Denn jetzt habe ich mit folgendem kommen Art von for line in A: for element in line: ....

Ich weiß auch über CartesianRange, aber ich möchte eine array-artige Zeile mit jeder Iteration arbeiten.

+1

Diese Frage ist möglicherweise relevant: https://stackoverflow.com/questions/21778374/what-is-the-recommended-way-to-iterate-a-matrix-over-rows –

+1

Mögliche Duplikate von [Was ist das? empfohlene Möglichkeit, eine Matrix über Zeilen zu iterieren?] (https://stackoverflow.com/questions/21778374/what-is-the-recommended-way-to-iterate-a-matrix-over-rows) –

+1

Ihre PS isn ' t eine dumme Frage überhaupt - ich würde es aufteilen und es unabhängig von der iterate-by-rows Frage fragen. –

Antwort

1

Da Arrays in Julia Spalte-Haupt gespeichert werden, kann es klüger/leistungsfähiger sein, nur die Matrix (A') zu transponieren und dann durchlaufen, wenn Sie eine Reihe von Dingen Zeile für Zeile ausführen möchten.

+0

Ok, aber sobald es umgesetzt ist, wie bekomme ich das Verhalten, das ich will? Ich schaute in das vorgeschlagene Duplikat und der einzige Weg ist durch Schneiden. Ich bekomme die "Linie" nicht wie in Python – Pigna

+1

Sobald Sie die Spalten-Haupt-Matrix erstellt haben, können Sie auch Ansichten verwenden. –

+1

Hier sind zwei Fragen, die nach einer Funktion 'rows' fragen, um' für Zeile in Zeilen (A) 'https://github.com/JuliaLang/julia/issues/14491 und https://github.com/JuliaCollections/IterTools zu aktivieren .jl/issues/11 – gggg

Verwandte Themen