我有一个向量的向量,比如说
julia> m=[[1,2],[3,4],[5,6]]
3-element Vector{Vector{Int64}}:
[1, 2]
[3, 4]
[5, 6]
我想转置,这意味着我想要一个具有相应的 3 元素向量(1、3、5 和 2、4、6)的 2 元素向量。
这显然可以通过循环来完成,但我怀疑这很慢,并且确信 Julia 有更好的解决方案。到目前为止我能想出的最好的看起来是这样的:
julia> matrixM=reshape(collect(Iterators.flatten(m)), (size(m[1],1),size(m,1)))
2×3 Matrix{Int64}:
1 3 5
2 4 6
julia> map(i->matrixM[i,:], 1:size(matrixM,1))
2-element Vector{Vector{Int64}}:
[1, 3, 5]
[2, 4, 6]
您可以使用:
julia> using SplitApplyCombine
julia> invert([[1,2],[3,4],[5,6]])
2-element Vector{Vector{Int64}}:
[1, 3, 5]
[2, 4, 6]
A
zip
Python 方法
m = [[1,2], [3,4], [5,6]]
[zip(m...)...]
输出:
2-element Vector{Tuple{Int64, Int64, Int64}}:
(1, 3, 5)
(2, 4, 6)
但是,对于 100 个元素,它看起来很慢,对于 1000 个元素,我的 jupyter-lab 内核甚至会重新启动。
(还有一个继续使用 Python 的理由。)