🎃
Juliaのブロードキャストについて
以前、名古屋出身の方に教えて頂いたのですが。。。私自身が全くJuliaを分かっていなく、理解出来ていなかったので改めてまとめました。
基本
3つのコードは、全て同じ演算結果が返ってくる。
map(x->sin(x), [π/2, π, 3/2π, 2π])
broadcast(x->sin(x), [π/2, π, 3/2π, 2π])
sin.([π/2, π, 3/2π, 2π])
異なる型の演算が出来る
3-element Vector{Int64}
と3×2 Matrix{Int64}
で型が異なるにかかわらず足し算が出来る。
julia> A = [1, 2, 3]
3-element Vector{Int64}:
julia> B = [1 2; 3 4; 5 6]
3×2 Matrix{Int64}:
julia> broadcast(+, A, B)
3×2 Matrix{Int64}:
2 3
5 6
8 9
julia> A .+ B
3×2 Matrix{Int64}:
2 3
5 6
8 9
自作関数に対してドット関数を使う
julia> f(x, y) = x + 2y
julia> xs = 1:3
julia> ys = 1:3
julia> f.(xs, ys)
3-element Vector{Int64}:
3
6
9
その他
様々な演算で、ドット演算子を使う。
julia> [2, 3, 5] .+ 1
3-element Vector{Int64}:
3
4
6
julia> [2 3; 5 7] .+1
2×2 Matrix{Int64}:
3 4
6 8
julia> [2, 3, 5] .* 3
3-element Vector{Int64}:
6
9
15
julia> [2, 3, 5] .^ 3
3-element Vector{Int64}:
8
27
125
julia> [2, 3, 5] .== 3
3-element BitVector:
0
1
0
Discussion