🎃

Juliaのブロードキャストについて

2023/01/02に公開

以前、名古屋出身の方に教えて頂いたのですが。。。私自身が全く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