【问题标题】:Julia: Transforming an Array of Arrays in a 2-dimensional ArrayJulia:在二维数组中转换数组数组
【发布时间】:2014-07-02 03:59:46
【问题描述】:

我有一个数组d,其中包含一个浮点数组:

julia> d
99-element Array{Array{Float64,1},1}:
...

我正在尝试将其转换为二维数组,并成功实现了我的目标:

data = Array(Float64,length(d),length(d[1]))
for i in 1:length(d)
    for j in 1:length(d[1])
        data[i,j] = d[i][j]
    end
end

有没有更简单的方法?

【问题讨论】:

    标签: arrays julia


    【解决方案1】:

    hcat(d...)vcat(d...) 应该做你想做的事。

    【讨论】:

    • @scry 你能详细说明一下吗?问题是将一维数组的一维数组转换为二维数组。规定的方法有效。
    • 我只想指出... 在这里很重要,它将splat 函数的参数(谢谢@MattB)。我写了(并删除)了一个误导性的答案,因为我不知道它们会按字面意思使用。
    • 另外,为了得到一个形状相同的矩阵,对hcat的结果进行转置:hcat(d...)'
    • 或者直接使用vcat(d...)
    • vcat 给了我一个“扁平化”的一维数组——除非我遗漏了什么,否则它是不等价的。
    【解决方案2】:

    如果您的数组数组应该表示一个矩阵并且您想保留逻辑,那么这是我发现的更简单的(julia 1.1)

    julia> a=[ [1,2], [3,4], [5,6] ]
    3-element Array{Array{Int64,1},1}:
     [1, 2]
     [3, 4]
     [5, 6]
    
    julia> permutedims(reshape(hcat(a...), (length(a[1]), length(a))))
    3×2 Array{Int64,2}:
     1  2
     3  4
     5  6
    

    可以使用transpose 代替permutedims

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2016-09-06
      • 2016-02-18
      • 2018-02-19
      • 2015-09-03
      相关资源
      最近更新 更多