julia で、n×m の Array で平均等の計算の速度を上げる方法
先日、 juliaDB は、早いという話しを書きました 。しかしながら、Array を、しっかりと使いこなすと、Array はとても早いです。 先日の DataFrame を作ってみましょう。 julia> df = DataFrame( col1 = randn(10^5), col2 = randn(10^5), col3 = randn(10^5) ); この DataFrame の横方向の合計等を調べようというお話しです。 単純に、横方向の合計を求める場合は、まず、Array に変換して、sum(A::Array,2) とするだけで良いようです。 julia 1.0 の人は、sum(A::Array, dims=2) なので注意です。 julia> A = Array(df); julia> sum(A,2) # julia 1.0 のひとは、"sum(A, dims=2)" です 100000×1 Array{Float64,2}: 0.339824 -0.711329 5.8185 -1.94555 0.535156 -0.670403 -1.56872 0.534236 -1.98732 -2.90369 ⋮ 略 これで1撃です。mean(), std()なども、この方法が使えます。 では、先日の関数、 julia> function summary_row(df::DataFrame) array_selected = Array(df[collect(df[:,2].>0) .& collect(df[:,2].>0),:]) row_sum=Array{Float64,1}[] row_mean=Array{Float64,1}[] for i in 1:size(array_selected)[1] if i==1 row_sum = sum(array_selected[i,:]) ...