Julia 转置向量向量

问题描述 投票:0回答:2

我有一个向量的向量,比如说

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]
multidimensional-array julia transpose
2个回答
5
投票

您可以使用:

julia> using SplitApplyCombine

julia> invert([[1,2],[3,4],[5,6]])
2-element Vector{Vector{Int64}}:
 [1, 3, 5]
 [2, 4, 6]

0
投票

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 的理由。)

© www.soinside.com 2019 - 2024. All rights reserved.