在Julia中将Vector转换为Matrix的最佳方法?

abe*_*ysh 6 arrays multidimensional-array julia

假设我有v一个类型的变量Vector.

什么是最好/最快的方式将其转换为Matrix表示(无论出于何种原因)?

澄清,v''将完成这项工作,但这是最好的方法吗?

Chi*_*olm 14

重塑应该是最有效的.来自文档:

reshape(A,dims):使用与给定数组相同的数据创建一个数组,但具有不同的维度.特定类型的阵列的实现可以选择是复制还是共享数据.

julia> v = rand(3)
3-element Array{Float64,1}:
 0.690673 
 0.392635 
 0.0519467

julia> reshape(v, length(v), 1)
3x1 Array{Float64,2}:
 0.690673 
 0.392635 
 0.0519467
Run Code Online (Sandbox Code Playgroud)

  • 我们现在可以使用 `reshape(v, :, 1)`,而不是显式地查找 `length(v)`。https://docs.julialang.org/en/v1/base/arrays/#Base.reshape (3认同)

abe*_*ysh 6

v[:,:] 这可能是最清楚的方法.

例如:

julia> v=[1,2,3]
3-element Array{Int64,1}:
1
2
3

julia> m=v[:,:]
3x1 Array{Int64,2}:
1
2
3

julia> ndims(m)
2
Run Code Online (Sandbox Code Playgroud)

  • 这会分配,所以最好使用 reshape (4认同)