在Julia中连接数组

Abh*_*ith 19 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
Run Code Online (Sandbox Code Playgroud)

Sal*_*apa 22

使用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
Run Code Online (Sandbox Code Playgroud)


小智 15

方括号可用于连接:

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
Run Code Online (Sandbox Code Playgroud)

  • 一般来说,我认为`vcat`和`hcat`应该是首选,因为这个解决方案是空白敏感的.例如:`[a - b]`将`vcat`而``[a -b]`将`hcat`.这可能是一个令人讨厌的错误. (7认同)
  • 似乎有点落后*不喜欢语法糖版本.毕竟,什么是糖**?你是说这个语法可能会被删除? (4认同)
  • 这分别是`vcat`和`hcat`的语法糖:`[[[(([a; b])中的e的头部:( [ab])]]#符号[:vcat,:hcat]` (3认同)

Lan*_*don 8

您可以使用该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
Run Code Online (Sandbox Code Playgroud)

  • 更新的版本需要 `dims` 关键字,例如 `cat(a,b,dims=3)` (4认同)