When using numpy.ndenumerate the indices are returned following for a C-contiguous array order, for example:
import numpy as np
a = np.array([[11, 12],
[21, 22],
[31, 32]])
for (i,j),v in np.ndenumerate(a):
print i, j, v
No mather if the order in a is 'F' or 'C', this gives:
0 0 11
0 1 12
1 0 21
1 1 22
2 0 31
2 1 32
Is there any built-in iterator in numpy like ndenumerate to give this (following the array order='F'):
0 0 11
1 0 21
2 0 31
0 1 12
1 1 22
2 1 32
You can do it with np.nditer as follows:
it = np.nditer(a, flags=['multi_index'], order='F')
while not it.finished:
print it.multi_index, it[0]
it.iternext()
np.nditer is a very powerful beast that exposes some of the internal C iterator in Python, take a look at Iterating Over Arrays in the docs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With