投稿

9月, 2020の投稿を表示しています

julia で、2つの長さが等しい Array から、Dict を作る方法。

julia で、2つの長さが等しい Array から、Dict を作る方法は、ブロードキャスト ".=>" を受入れてくれるようです。 あまり他所に書いてないようなので、下記に例を書いてみます。 `(k, v)` とか使わなくても良いようです。 julia>using Random julia> A1 = [randstring(12) for i in 1:10^4]; julia> A2 = [1:10^4;]; julia> dict1to2 = Dict(A1 .=> A2) Dict{String,Int64} with 10000 entries: "2O8UQz7YMLYB" => 401 "BHio5wUtaZdJ" => 4406 "ZDC8DbgGIWqq" => 9388 "iS0VPBz63eew" => 597 "KLjUUvFhaPbN" => 8505 "UOONzuGjM4Is" => 8096 "MbknXUyhSF95" => 4242 ⋮ => ⋮ 逆さ方向は、" Julia の Dict(辞書) を Array や DataFrame に組み直す方法 " を見て下さいね。 おしまい。

julia の DataFrames.jl で重複のある文字列の列は、文字列毎に整数を与えると検索が高速化できる

julia の DataFrames.jl で重複のある文字列の列は、文字列毎に整数を与えると選択が高速化できるという話しです。 まとめて言ってしまうと下記の速度比較のように、文字列と文字列を比べるよりも、整数と整数を比べる方が早いという話しです。 julia> using BenchmarkTools julia> @benchmark 1234567890 == 123456790 BenchmarkTools.Trial: memory estimate: 0 bytes allocs estimate: 0 -------------- minimum time: 0.027 ns (0.00% GC) median time: 0.033 ns (0.00% GC) mean time: 0.032 ns (0.00% GC) maximum time: 0.035 ns (0.00% GC) -------------- samples: 10000 evals/sample: 1000 julia> @benchmark "a" == "a" BenchmarkTools.Trial: memory estimate: 0 bytes allocs estimate: 0 -------------- minimum time: 3.963 ns (0.00% GC) median time: 3.965 ns (0.00% GC) mean time: 4.106 ns (0.00% GC) maximum time: 16.982 ns (0.00% GC) -------------- samples: 10000 evals/sample: 1000 上記の速度差については、10^4 行程度の DataFrame だと気にしていませんでした。 しかし、データが大きくなってくると高速化が必要性を感じるようになってきたので、具体的に調べてみ...