将命名元组的向量元素提取到 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]