将命名元组的向量元素提取到 Julia 中的矩阵中
extracting elements of vector of named tuples into matrix in Julia
假设 results
是一个长度为 M
的元组向量,其中 typeof(result) = Vector{NamedTuple{(:x, :p, :step), Tuple{Vector{Float64}, Float64, Int64}}}
.
p
也是长度为 N
的向量,其中 typeof(results[1].p) = Vector{Float64}
。我想提取 results
内所有 p
的第一个 N-1
元素,并将其表示为 M x (N-1)
矩阵。我知道如何在 for 循环中执行此操作,但是否有更多元素的方法来执行此操作?
这些都应该满足您的要求,但它们 return 是一个 (N-1 x M)
矩阵,我认为它们非常相似
hcat(map(x->x.p[1:N-1], results)...)
hcat([x.p[1:N-1] for x in results]...)
对于(M x N-1)
输出
vcat(map(x->x.p[1:N-1]', results)...)
vcat([x.p[1:N-1]' for x in results]...)
应该可以,但速度有点慢。
为此,传统的 2 循环理解可能比 vcat
快 10 倍。你直接得到一个M x (N-1)
矩阵。
[results[i].p[j] for i=1:M, j=1:N-1]
假设 results
是一个长度为 M
的元组向量,其中 typeof(result) = Vector{NamedTuple{(:x, :p, :step), Tuple{Vector{Float64}, Float64, Int64}}}
.
p
也是长度为 N
的向量,其中 typeof(results[1].p) = Vector{Float64}
。我想提取 results
内所有 p
的第一个 N-1
元素,并将其表示为 M x (N-1)
矩阵。我知道如何在 for 循环中执行此操作,但是否有更多元素的方法来执行此操作?
这些都应该满足您的要求,但它们 return 是一个 (N-1 x M)
矩阵,我认为它们非常相似
hcat(map(x->x.p[1:N-1], results)...)
hcat([x.p[1:N-1] for x in results]...)
对于(M x N-1)
输出
vcat(map(x->x.p[1:N-1]', results)...)
vcat([x.p[1:N-1]' for x in results]...)
应该可以,但速度有点慢。
为此,传统的 2 循环理解可能比 vcat
快 10 倍。你直接得到一个M x (N-1)
矩阵。
[results[i].p[j] for i=1:M, j=1:N-1]