在 Julia 中堆叠向量向量的简单方法

Sam*_*olk 6 vector julia

我想要一种在 Julia 中以编程方式“解构”可变长度向量的方法。我不关心结果向量的顺序。

例如,假设我的向量向量是A = [[1], [2,3], [4,5,6]]。我可以A通过写入来解构vcat(A[1], A[2], A[3]),它会返回[1,2,3,4,5,6]。然而,如果 的长度A很大,那么这种方法就变得很麻烦。有没有更好、更可扩展的方法来获得相同的结果?

Prz*_*fel 7

尝试Iterators.flatten

julia> collect(Iterators.flatten(A))
6-element Vector{Int64}:
 1
 2
 3
 4
 5
 6
Run Code Online (Sandbox Code Playgroud)

(这会产生一个惰性表示,因此我collect在显示输出之前编辑了这个)


Nil*_*dat 7

虽然我会支持 Przemyslaw 对于任何可以使用惰性表示的情况的回答,但也许对你的问题更直接的答案是:

julia> vcat(A...)
6-element Vector{Int64}:
 1
 2
 3
 4
 5
 6
Run Code Online (Sandbox Code Playgroud)

每当您觉得需要将集合的所有元素作为函数参数键入时,splatting...就是您的朋友。

然而,splatting 会对性能产生负面影响,因此通常建议使用reduce,它专门用于vcat

julia> reduce(vcat, A)
6-element Vector{Int64}:
 1
 2
 3
 4
 5
 6
Run Code Online (Sandbox Code Playgroud)