将NamedTuple的数组转换为Julia中的数组

将NamedTuple的数组转换为Julia中的数组,julia,Julia,我从Julia中的hdf5文件中读取了一个名为tuple的数组。它有名称X、Y和Z。有没有一种简洁的方法将其转换为分别包含X、Y和Z值的三个数组 typeof(science_h5["/Nav/Position"][:]) Array{NamedTuple{(:X, :Y, :Z),Tuple{Float32,Float32,Float32}},1} 您可以使用Tables.jl中的表格。columntable: julia> a = [(X=i, Y=i+1, Z

我从Julia中的hdf5文件中读取了一个名为tuple的数组。它有名称X、Y和Z。有没有一种简洁的方法将其转换为分别包含X、Y和Z值的三个数组

typeof(science_h5["/Nav/Position"][:])

Array{NamedTuple{(:X, :Y, :Z),Tuple{Float32,Float32,Float32}},1}

您可以使用Tables.jl中的
表格。columntable

julia> a = [(X=i, Y=i+1, Z=i+2) for i in 1:5]
5-element Vector{NamedTuple{(:X, :Y, :Z), Tuple{Int64, Int64, Int64}}}:
 (X = 1, Y = 2, Z = 3)
 (X = 2, Y = 3, Z = 4)
 (X = 3, Y = 4, Z = 5)
 (X = 4, Y = 5, Z = 6)
 (X = 5, Y = 6, Z = 7)

julia> Tables.columntable(a)
(X = [1, 2, 3, 4, 5], Y = [2, 3, 4, 5, 6], Z = [3, 4, 5, 6, 7])
如果只想使用Julia Base,可以执行以下操作:

julia> X, Y, Z = [getindex.(a, i) for i in 1:3]
3-element Vector{Vector{Int64}}:
 [1, 2, 3, 4, 5]
 [2, 3, 4, 5, 6]
 [3, 4, 5, 6, 7]

julia> X, Y, Z = [getproperty.(a, i) for i in (:X, :Y, :Z)]
3-element Vector{Vector{Int64}}:
 [1, 2, 3, 4, 5]
 [2, 3, 4, 5, 6]
 [3, 4, 5, 6, 7]