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