26

Juliaでサイズ1*NまたはN*1のMatrix{T}をVector{T}に変換する最も効率的な方法は何ですか?

たとえば、私が持っているとしましょう

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

aとの両方bが型Array{Int,2}(つまりMatrix{Int}) です。a変換しbて入力する最も効率的な方法は何ですかArray{Int,1}(つまりVector{Int})?

1 つのアプローチは次のとおりです。

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

3 に答える 3

38

機能を使用できますvec()。リスト内包表記よりも高速で、要素数に応じてより適切にスケーリングできます;) 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 秒 # リスト内包表記

2.92e-7 秒 # vec()

于 2013-01-20T15:50:23.397 に答える
4

squeeze行列が1xNまたはNx1:の場合、これを行うために使用する傾向があります。

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

vecまたはを使用するよりも効率的かどうかはわかりませんreshape

于 2013-01-20T22:20:30.580 に答える