Юлия: как перебирать строки за строкой в многомерном массиве
Скажи, что у меня есть многомерный массив 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'
), а затем переберите его, если вы хотите делать много вещей построчно.