【Julia入門】Juliaの多次元配列③ 多次元配列の演算とブロードキャスティング

統計や機械学習に関するプログラミングではPythonRが用いられることが多いですが、近年Juliaも注目を集めています。そこで当シリーズではJuliaの基本構文からライブラリの用い方などについて取りまとめます。当記事ではJuliaの多次元配列の演算とブロードキャスティングについて取りまとめを行いました。

Julia入門
https://www.hello-statisticians.com/julia

Julia 1.8 Documentation
https://docs.julialang.org/en/v1/

多次元配列の演算

基本的な四則演算

概要
A+B ABの加算
A-B ABの減算
A*B ABの乗算
A*c Acの乗算
A/B ABの除算

実行例

Juliaの多次元配列は下記のように四則演算を行うことが可能です。

using Random
Random.seed!(1)

A = ones(3,3)
B = rand(3,3)

println(A)
println(B)

println(A+B)
println(A-B)
println(A*B)
println(A*2)
println(A/B)

・実行結果

[1.0 1.0 1.0; 1.0 1.0 1.0; 1.0 1.0 1.0]
[0.0491718221481211 0.024094310524527707 0.08725304891274233; 0.11907881640750706 0.6918572875342215 0.8557176841095734; 0.3932710232252806 0.7675180540873912 0.8025607099234905]
[1.049171822148121 1.0240943105245277 1.0872530489127423; 1.119078816407507 1.6918572875342215 1.8557176841095733; 1.3932710232252807 1.7675180540873912 1.8025607099234904]
[0.9508281778518789 0.9759056894754723 0.9127469510872577; 0.8809211835924929 0.3081427124657785 0.14428231589042662; 0.6067289767747194 0.23248194591260885 0.1974392900765095]
[0.5615216617809088 1.4834696521461403 1.7455314429458062; 0.5615216617809088 1.4834696521461403 1.7455314429458062; 0.5615216617809088 1.4834696521461403 1.7455314429458062]
[2.0 2.0 2.0; 2.0 2.0 2.0; 2.0 2.0 2.0]
[2.758973532549559 -1.6396138188639022 2.6942730445076255; 2.758973532549559 -1.6396138188639022 2.6942730445076255; 2.758973532549559 -1.6396138188639022 2.6942730445076255]

ブロードキャスティング

概要

ブロードキャスティングはサイズが異なる配列同士の演算を効率よく実行する仕組みです。ブロードキャスティングを行う際は次項で取り扱うドット演算子を用います。

ドット演算子

概要
A .+ B ABの要素単位の加算
A .+ c Acの加算
A .- c Acの減算
A .* c Acの乗算
A ./ B Acの除算

実行例

ブロードキャスティングを用いた演算は下記のように行うことができます。

A = ones(3,3)
B = 2*ones(3,3)
c = 2.0

println(A + B)
println(A .+ c)
println(A .- c)
println(A .* c)
println(A ./ c)

・実行結果

[3.0 3.0 3.0; 3.0 3.0 3.0; 3.0 3.0 3.0]
[3.0 3.0 3.0; 3.0 3.0 3.0; 3.0 3.0 3.0]
[-1.0 -1.0 -1.0; -1.0 -1.0 -1.0; -1.0 -1.0 -1.0]
[2.0 2.0 2.0; 2.0 2.0 2.0; 2.0 2.0 2.0]
[0.5 0.5 0.5; 0.5 0.5 0.5; 0.5 0.5 0.5]

参考

Julia 1.8 Documentation
https://docs.julialang.org/en/v1/