Юлия: как перебирать строки за строкой в ​​многомерном массиве

Скажи, что у меня есть многомерный массив 4x4:

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

и я хочу перебирать строку за строкой (т.е. [1, 5, 9, 13] будет первый [2, 6, 10, 14], затем...).

Как мне это сделать? На данный момент я придумал следующее:

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

но мне было интересно, есть ли более "питонический" способ сделать это: for line in A: for element in line: ...,

Я также знаю о CartesianRange, но мне хотелось бы иметь массивоподобную строку для работы на каждой итерации.

2 ответа

Для наглядности: в настоящее время (julia > 1.1) используйте "eachrow"

for row in eachrow(A)
    println(row)
end

Поскольку массивы в Julia хранятся в столбце-мажоре, может быть разумнее / эффективнее просто транспонировать матрицу (A'), а затем переберите его, если вы хотите делать много вещей построчно.

Очень хороший пакет для такого рода вещей - JuliennedArrays.

Другие вопросы по тегам