【问题标题】:Converting Julia nested list to multidimensional array将 Julia 嵌套列表转换为多维数组
【发布时间】:2022-01-09 01:57:45
【问题描述】:

给定一个 Julia 列表:

data = [[1,2],[4,5]]

类型为Vector{Int64},如何将其转换为二维数据类型(例如2×2 Matrix{Int64}),以便像data[:,2] 一样对其进行索引?我尝试了hcatvcat,但无法得到我想要的结果。提前致谢!

【问题讨论】:

    标签: julia


    【解决方案1】:

    您可以为此使用Iterators。拥有 Vector 后,只需使用 reshape

    reshape( collect(Iterators.flatten([[1,2],[4,5]])), 2,2 )
    
    2×2 Matrix{Int64}:
     1  4
     2  5
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      julia> reduce(hcat, data)
      2×2 Matrix{Int64}:
       1  4
       2  5
      

      【讨论】:

        【解决方案3】:

        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
        

        【讨论】:

        • 谢谢。我确实习惯了 NumPy,所以额外的上下文会有所帮助。在这种情况下,... 运算符做了什么?
        • @RvdV,它是“splat”运算符 - 与 Python 中 function(*[1,2,3,4,5]) 中的 * 运算符基本相同
        • 清除,感谢您的帮助!
        猜你喜欢
        • 2016-09-28
        • 2010-12-27
        • 2014-12-30
        • 2018-02-10
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 2016-12-16
        • 1970-01-01
        相关资源
        最近更新 更多