Как я могу создать 2d-массив с пониманием списка? - PullRequest
3 голосов
/ 02 августа 2020

Чтобы сделать 2-мерный массив с пониманием списка, я пишу это:

array = [f(i) for in 1:length]

здесь функция f возвращает 1-й список. Но в результате в виде вложенного массива .... Как я могу создать 2-мерный массив с пониманием списка?

Пример 2-го измерения выглядит следующим образом:

julia> A
2×3 Array{Float64,2}:
 0.0194681  0.195811  0.150168
 0.398199   0.544672  0.942663

Ответы [ 2 ]

4 голосов
/ 02 августа 2020

Поскольку ваш f уже возвращает вектор (я предполагаю, что вы ссылаетесь на этот тип, когда пишете «1-мерный список»), то невозможно создать матрицу, используя понимание (если вы не хотите написать f(i)[j] в примере Пшемыслава, который будет неэффективным).

Что вам нужно сделать, это:

reduce(hcat, [f(i) for i in 1:len])

, чтобы получить матрицу, столбцы которой являются значениями, возвращаемыми f(i).

2 голосов
/ 02 августа 2020

Вот оно:

julia> [x*y for x in 1:5, y in 1:3]
5×3 Array{Int64,2}:
 1   2   3
 2   4   6
 3   6   9
 4   8  12
 5  10  15
...