Open11
Juliaの使い方を勉強していく(演算子、マクロなどの仕様)
juliaで使われるマクロに関して
タプルとは配列に似た型であるが、配列とは違い値を変更することができない固定長の要素の集まり
具体的な使い方
- 複数の引数を持つ関数にたいしてパラメータを与える
# 配列
a = [1, 2, 3]
a
#> 3-element Vector{Int64}:
#> 1
#> 2
#> 3
a[1] = 10
a
#> 3-element Vector{Int64}:
#> 10
#> 2
#> 3
# タプル
b = (1, 2, 3)
b
#> (1, 2, 3)
b[1] = 10
#> MethodError: no method matching setindex!(::Tuple{Int64, Int64, Int64}, ::Int64, ::Int64)
Juliaのパイプ演算子に関して
- Base.Pipe
- Pipe.jl
- Chain.jl
が現在確認中。それぞれの違いは?
Juliaで乱数を出力する方法
文字列乱数
using Distributions
# - 文字列乱数
letters = ["a", "b", "c"]
probs = [0.1, 0.2, 0.7]
letters_dist = Categorical(probs)
println(letters[rand(letters_dist)])
#> a
# - 複数の文字列乱数
println(letters[rand(letters_dist, 10)])
#> ["c", "b", "c", "b", "c", "c", "c", "b", "b", "b"]
整数乱数
rand(1:5, 10)
#> 10-element Vector{Int64}:
#> 2
#> 1
#> ....
#> 4
一様乱数
rand(Uniform(1,10), 10)
#> 10-element Vector{Float64}:
#> 1.779145123574671
#> 5.162092601718651
#> 3.143458858775074
#> 6.268164774415135
OR
uni_dist = Uniform(1, 10)
rand(uni_dist, 10)
二項分布
rand(Binomial(1, 1/10), 10)
#> 10-element Vector{Int64}:
#> 0
#> ...
#> 0
#> 1
#> 0
#> ...
正規分布
# nrm_dist = Normal(); rand(nrm_dist, 10)
rand(Normal(), 10)
forループに関して
enumurate()
関数を使った配列に対するforループ
- enumerate関数は要素のインデックス番号と要素を同時に取り出すことが出来る関数
- pythonで使われている
αs = [[0.1, 0.1, 0.1],
[0.5, 0.5, 0.5],
[1.0, 2.0, 5.0]
]
for i in enumerate(αs)
println(i)
end
#> (1, [0.1, 0.1, 0.1])
#> (2, [0.5, 0.5, 0.5])
#> (3, [1.0, 2.0, 5.0])
enumerate()を使ったfor loop
x_list = [-1.0, 0.0, 1.5]
for (i, j) in enumerate(x_list)
println("i:$i, j:$j")
end
#> i:1, j:-1.0
#> i:2, j:0.0
#> i:3, j:1.5