【发布时间】:2022-01-09 01:57:45
【问题描述】:
给定一个 Julia 列表:
data = [[1,2],[4,5]]
类型为Vector{Int64},如何将其转换为二维数据类型(例如2×2 Matrix{Int64}),以便像data[:,2] 一样对其进行索引?我尝试了hcat 或vcat,但无法得到我想要的结果。提前致谢!
【问题讨论】:
标签: julia
给定一个 Julia 列表:
data = [[1,2],[4,5]]
类型为Vector{Int64},如何将其转换为二维数据类型(例如2×2 Matrix{Int64}),以便像data[:,2] 一样对其进行索引?我尝试了hcat 或vcat,但无法得到我想要的结果。提前致谢!
【问题讨论】:
标签: julia
您可以为此使用Iterators。拥有 Vector 后,只需使用 reshape。
reshape( collect(Iterators.flatten([[1,2],[4,5]])), 2,2 )
2×2 Matrix{Int64}:
1 4
2 5
【讨论】:
你可以这样做:
julia> reduce(hcat, data)
2×2 Matrix{Int64}:
1 4
2 5
【讨论】:
hcat 工作正常:
julia> hcat([[1,2],[4,5]]...)
2×2 Matrix{Int64}:
1 4
2 5
问题在于 Julia 中的向量是 列 - 向量(例如,与 NumPy 中的不同),因此您应该 horisontally concatenate 来获取矩阵。 p>
如果你使用vcat,你会将它们堆叠在一起,得到一个高向量:
julia> vcat([[1,2],[4,5]]...)
4-element Vector{Int64}:
1
2
4
5
【讨论】:
... 运算符做了什么?
function(*[1,2,3,4,5]) 中的 * 运算符基本相同