如何在Julia中展平2D数组?

bit*_*ise 2 julia

julia中是否有将2D数组转换为1D数组的函数?例如,我知道如何通过定义函数来实现该功能,但是我不想每次都编写它。

function flatten(Mat)
n, m = size(Mat)
flattened = zeros(m*n)
for i=1:n
    for j=1:m
        flattened[(i-1)*m + j] = Mat[i,j]
    end
end
return flattened
end
Run Code Online (Sandbox Code Playgroud)

fre*_*kre 5

您可以使用vechttps://docs.julialang.org/en/v1/base/arrays/#Base.vec):

julia> A = rand(2, 2)                                                     
2×2 Array{Float64,2}:
 0.843062  0.164179
 0.167501  0.800111

julia> vec(A)                                                             
4-element Array{Float64,1}:
 0.8430624537022231 
 0.16750120450998196
 0.16417911360611237
 0.8001111380491013
Run Code Online (Sandbox Code Playgroud)

  • 朱莉娅(Julia)专长于专栏,因此明智地行将一定会变慢,我认为这不是一个好主意。如果可能,您应该尝试设计算法以沿列工作。如果需要,可以使用vec(A)。 (3认同)