2016-09-20 49 views
5

如果兩個Int陣列是a = [1;2;3]b = [4;5;6],我們如何連接兩個維度中的兩個數組?預期輸出,在Julia中連接陣列

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

的[2個串聯朱陣列而不修改他們]可能的複製(http://stackoverflow.com/questions/37206550/concatenate-2-julia- – niczky12

回答

7

使用vcathcat功能:

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 
9

方括號可以用於級聯:

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

這是'vcat'和'hcat'的語法糖:'[e.head for e in [:([a; b]),:([ab])]]#符號[:vcat,:hcat]' – SalchiPapa

+6

通常我認爲'vcat'和'hcat'應該是首選的,因爲這個解決方案對空白敏感。例如:'[a - b]'將'vcat'同時'[a -b]'將'hcat'。這可能是一個令人討厭的錯誤。 –

+3

*不喜歡語法糖的版本。畢竟,糖*爲*是什麼?你是說這個語法可能會被刪除嗎? – DNF

6

可以使用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