Конкатенация массивов в Julia
Если две массивы Int
: a = [1;2;3]
и b = [4;5;6]
, как мы объединяем два массива в обоих измерениях? Ожидаемые результаты,
julia> out1
6-element Array{Int64,1}:
1
2
3
4
5
6
julia> out2
3x2 Array{Int64,2}:
1 4
2 5
3 6
Ответы
Ответ 1
Используйте функции vcat
и hcat
:
julia> a, b = [1;2;3], [4;5;6]
([1,2,3],[4,5,6])
help?> vcat
Base.vcat(A...)
Concatenate along dimension 1
julia> vcat(a, b)
6-element Array{Int64,1}:
1
2
3
4
5
6
help?> hcat
Base.hcat(A...)
Concatenate along dimension 2
julia> hcat(a, b)
3x2 Array{Int64,2}:
1 4
2 5
3 6
Ответ 2
Квадратные скобки могут использоваться для конкатенации:
julia> a, b = [1;2;3], [4;5;6]
([1,2,3],[4,5,6])
julia> [a; b]
6-element Array{Int64,1}:
1
2
3
4
5
6
julia> [a b]
3×2 Array{Int64,2}:
1 4
2 5
3 6
Ответ 3
Вы можете использовать функцию cat
для конкатенации любого количества массивов по любому измерению. Первый вход - это размер, над которым выполняется конкатенация; остальные входы - все массивы, которые вы хотите объединить вместе
a = [1;2;3]
b = [4;5;6]
## Concatenate 2 arrays along the first dimension
cat(1,a,b)
6-element Array{Int64,1}:
1
2
3
4
5
6
## Concatenate 2 arrays along the second dimension
cat(2,a,b)
3x2 Array{Int64,2}:
1 4
2 5
3 6
## Concatenate 2 arrays along the third dimension
cat(3,a,b)
3x1x2 Array{Int64,3}:
[:, :, 1] =
1
2
3
[:, :, 2] =
4
5
6
Ответ 4
когда встречается Array {Array, 1}, грамматика немного отличается, например:
julia> a=[[1,2],[3,4]]
2-element Array{Array{Int64,1},1}:
[1, 2]
[3, 4]
julia> vcat(a)
2-element Array{Array{Int64,1},1}:
[1, 2]
[3, 4]
julia> hcat(a)
2×1 Array{Array{Int64,1},2}:
[1, 2]
[3, 4]
julia> vcat(a...)
4-element Array{Int64,1}:
1
2
3
4
julia> hcat(a...)
2×2 Array{Int64,2}:
1 3
2 4
ссылка:
... объединяет множество аргументов в один аргумент в определениях функций В контексте определений функций оператор... используется для объединения множества различных аргументов в один аргумент. Такое использование... для объединения множества различных аргументов в один аргумент называется slurping