array julia-lang

julia lang - array - ¿Cuál es la forma más eficiente de convertir una Matriz{T} de tamaño 1*N o N*1 en Julia a un Vector{T}?



array julia (3)

¿Cuál es la forma más eficiente de convertir una Matriz {T} de tamaño 1 * N o N * 1 en Julia a un Vector {T}?

Por ejemplo, digamos que tengo

a = [1,3,5] b = a''

Tanto a como b son de tipo Array{Int,2} (es decir, Matrix{Int} ). ¿Cuáles son las formas más eficientes de convertir a y b para escribir Array{Int,1} (es decir, Vector{Int} )?

Un enfoque es:

a_vec = [x::Int for x in a] b_vec = [x::Int for x in b]


Puedes usar la función vec() . Es más rápido que la lista de comprensión y se escala mejor con el número de elementos;) Para una matriz de 1000x1:

julia> const a = reshape([1:1000],1000,1); julia> typeof(a) Array{Int64,2} julia> vec_a = [x::Int for x in a]; julia> typeof(vec_a) Array{Int64,1} julia> vec_aII = vec(a); julia> typeof(vec_aII) Array{Int64,1}

6.41e-6 segundos # lista de comprensión

2.92e-7 segundos # vec ()


Tendría que usar squeeze para hacer esto si la matriz es 1xN o Nx1 :

squeeze(ones(3, 1)) squeeze(ones(1, 3))

No estoy seguro si eso es más eficiente que usar vec o reshape .


vec () es más rápido

const a = reshape([1:1000],1000,1); @time vec(a); elapsed time: 6.914e-6 seconds (184 bytes allocated) @time squeeze(a,2); elapsed time: 1.0336e-5 seconds (248 bytes allocated)