Julia's Multidimensional Indices
Overview
Julia provides a type of index that can reference multi-dimensional arrays, known as CatesianIndex
1. Naturally, the naming Catesian
comes from the Cartesian product, which is the product of sets.
Code
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
For example, let’s assume you want to access the element 9
, which is in the 3rd row and 4th column of the matrix M
.
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
Intuitively, it seems like you could simply use the tuple pt = (3,4)
, but people familiar with programming will recognize that this method has its flaws. Typically, when referencing a two-dimensional array, especially a matrix, you need to explicitly separate the two integers like pt[1],pt[2]
.
julia> pt = CartesianIndex(3,4)
CartesianIndex(3, 4)
julia> M[pt]
9
Thankfully, Julia provides the CatesianIndex
, which allows you to pass the index as a whole. By converting the tuple directly into a CatesianIndex
, you get the desired result.
Full Code
M = rand(0:9, 4,4)
pt = (3,4)
M[pt]
M[pt[1],pt[2]]
pt = CartesianIndex(3,4)
M[pt]
Environment
- OS: Windows
- julia: v1.7.0