logo

ジュリアで異なるサイズのベクトル成分ごとに操作する方法 📂ジュリア

ジュリアで異なるサイズのベクトル成分ごとに操作する方法

説明

julia> x = [1 2 3]
1×3 Matrix{Int64}:
 1  2  3

julia> y = [1 2 3 4]
1×4 Matrix{Int64}:
 1  2  3  4

julia> x .+ y
ERROR: DimensionMismatch

サイズが異なる二つのベクトルは、基本的に要素ごとの演算を行うことができない。これを直接実装するなら、二重for文を使う必要があるが、幸いにも一つを行ベクトル、もう一つを列ベクトルとして与えることで、次のように要素ごとに演算した二次元配列を返すことができる。これは、MATLABやPython NumPyでも可能だ。

サイズが異なってもエラーにならない点で、意図しない計算になっているか注意が必要だ。

julia> x' .+ y
3×4 Matrix{Int64}:
 2  3  4  5
 3  4  5  6
 4  5  6  7

julia> x' .* y
3×4 Matrix{Int64}:
 1  2  3   4
 2  4  6   8
 3  6  9  12

julia> x' ./ y
3×4 Matrix{Float64}:
 1.0  0.5  0.333333  0.25
 2.0  1.0  0.666667  0.5
 3.0  1.5  1.0       0.75

もちろん、x' の代わりに transpose(x) を使ってもできる。

環境

  • OS: Windows10
  • Version: Julia 1.6.2