如何在 Julia 中连接两个向量?

Sam*_*uel 2 concatenation julia

给定两个向量a = [1, 2]and b = [3, 4],如何获得连接向量c = [1, 2, 3, 4]?似乎hcatvcat可以在它们处理数组时使用,但是当使用向量来存储元素集合时,首先考虑数据的方向似乎不合适;它应该只是一个值列表。

phi*_*ler 5

大多数Array方法将数组视为任意等级的一般“张量”(“数据立方体”),因此您确实需要考虑方向。在一般情况下,有cat(a, b; dims), 其中hcatvcat是特殊情况。

还有一类方法将Vectors 视为列表。从这些中,append!是将一个向量附加到另一个向量的方法。问题是它是可变的。因此,您可以,例如,append!(copy(a), b)或使用类似的东西BangBang.NoBang.append(不过,它只是在内部选择了正确的方法)。

对于要连接两个以上向量的情况,我喜欢的模式

reduce(append!, (a, b), init=Int[])
Run Code Online (Sandbox Code Playgroud)

  • 不,“reduce(vcat, ..)”更快(在我的笔记本电脑上速度大约是两倍,分配更少)。“reduce”对“vcat”和“hcat”有特殊的实现。 (2认同)

DNF*_*DNF 5

你可以写

[a; b]
Run Code Online (Sandbox Code Playgroud)

vcat底层,这与 相同,但它更简洁,看起来更好,并且更容易记住,因为它也与文字矩阵构造语法一致。

连接多个向量的另一种方法是

reduce(vcat, (a, b))
Run Code Online (Sandbox Code Playgroud)