Can anybody explain me the numpy.indices()?
The already posted answers are still complex so here a the simplest way to understand this.
Step 1: Let's create a 2x2 grid
ids = np.indices((2,2))
Step 2: Now let's unpack the i,j
indices
i, j = ids
These are the indices i,j
:
print(i)
[[0 0]
[1 1]]
print(j)
[[0 1]
[0 1]]
Step 3: Understand what i,j
represent
The easy way to think of it is to make pairs as (i0,j0), (i1,j1), (i2,j2), (i3,j3)
i.e. match each element of i
with the corresponding element of j
.
So we get: (0,0), (0,1), (1,0), (1,1)
.
These are exactly the indices of a 2x2 grid:
Suppose you have a matrix M whose (i,j)-th element equals
M_ij = 2*i + 3*j
One way to define this matrix would be
i, j = np.indices((2,3))
M = 2*i + 3*j
which yields
array([[0, 3, 6],
[2, 5, 8]])
In other words, np.indices
returns arrays which can be used as indices. The elements in i
indicate the row index:
In [12]: i
Out[12]:
array([[0, 0, 0],
[1, 1, 1]])
The elements in j
indicate the column index:
In [13]: j
Out[13]:
array([[0, 1, 2],
[0, 1, 2]])