目次
- 目次
- はじめに
- 二重ループ
- リストのリストをArrayに変換する
- リスト同士を比較して、同じ要素かどうかを比較
- リストを条件検索
- シンプルな最近傍点探索
- 2つのベクトルがなす角度を計算
- String to byte array
- Byte array to string
- Char to ascii int
- リストから行列を作る
- すでにある配列に値を代入するのを高速化する
- Juliaのパッケージ管理を厳密にしたい
- REPLの使い方がよくわからない
- 競技プログラミングでJuliaを使ってみたい
- 参考資料
- MyEnigma Supporters
はじめに
よく忘れて調べ直している
Juliaの文法やTipsに関するメモです。
順次追加予定です。
Juliaそのものに関しては、
下記を参照ください。
二重ループ
シンプルな二重ループを書きたい時に
for x in xlist for y in ylist # do somthing end end
ではなく、
for x in xlist, y in ylist # do somthing end
とシンプルに書ける。
リストのリストをArrayに変換する
例えば、3つの要素が入っているリストが100個リストとして入っている時に、
それを3x100のArrayにしたい場合は、
a_array = hcat(a...)
とすれば良い。
リスト同士を比較して、同じ要素かどうかを比較
x = [1, 1, 2] y = [2, 1, 4] x .== y #3-element BitArray{1}: # false # true # false
リストを条件検索
x = [1.0, 0.5, -0.2] t = x[abs.(x).>0.5] #1-element Array{Float64,1}: #1.0
シンプルな最近傍点探索
zの中からノルムが一番xに近い要素を選ぶ場合
nearest_neighbor(x,z) = z[ argmin([norm(x-y) for y in z]) ] z = ( [2,1], [7,2], [5.5,4], [4,8], [1,5], [9,6] ); nearest_neighbor([5,6], z)
2つのベクトルがなす角度を計算
ang(x,y) = acos(x'*y/(norm(x)*norm(y)));
String to byte array
string s = "hoge" key = Vector{UInt8}(s)
Byte array to string
s = string(key)
Char to ascii int
ascii = UInt8("a")
リストから行列を作る
reshape関数を使います。
下記の通り、片方の次元を指定すれば、
もう片方をコロン(:)で埋めれば自動で行列が計算されます。
すでにある配列に値を代入するのを高速化する
すでにある配列に、計算結果を代入したい場合、
下記の例のようにドット演算子を使うと高速化できます。
これは、ドット演算子を使った場合、
自動的に一つのループにまとめられる(fused expression)
という機能を使ったもので、
代入時に一時配列を作らないため、
GCの時間が削減されるからです。
Juliaのパッケージ管理を厳密にしたい
下記参照
REPLの使い方がよくわからない
下記参照
競技プログラミングでJuliaを使ってみたい
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。