logo

ジュリアの多次元インデックス 📂ジュリア

ジュリアの多次元インデックス

概要

Juliaでは、多次元配列を参照するためのインデックスタイプであるCatesianIndexを提供している1。もちろんCatesianという名前は、集合の積であるデカルト積から来ている。

コード

julia> M = rand(0:9, 4,4)
4×4 Matrix{Int64}:
 9  3  7  0
 8  6  2  1
 3  8  4  9
 5  6  8  2

例えば、行列Mの3行4列目の要素、9にアクセスしたいとしよう。

julia> pt = (3,4)
(3, 4)

julia> M[pt]
ERROR: LoadError: ArgumentError: invalid index: (3, 4) of type Tuple{Int64, Int64}

julia> M[pt[1],pt[2]]
9

直感的には、タプルpt = (3,4)をそのまま使えば良さそうだが、プログラミングに慣れている人なら、この方法に問題があることがわかるだろう。一般的に、このような二次元配列、特に行列を参照する時には、pt[1],pt[2]のように、二つの整数をはっきりと分けて入れなければならない。

julia> pt = CartesianIndex(3,4)
CartesianIndex(3, 4)

julia> M[pt]
9

ありがたいことに、Juliaではこのインデックスを丸ごと渡すことができるCatesianIndexが提供されている。タプルをそのままCatesianIndexに変換して参照すれば、望んでいた結果を得ることができる。

全コード

M = rand(0:9, 4,4)

pt = (3,4)
M[pt]
M[pt[1],pt[2]]

pt = CartesianIndex(3,4)
M[pt]

環境

  • OS: Windows
  • julia: v1.7.0