Iterating Arrays in NumPy
Iteration means accessing elements of an array one by one.
With NumPy, we can easily iterate through arrays, including multi-dimensional ones, using Python’s basic for loops or NumPy’s helper functions.
Iterating 1-D Arrays
Program:
When iterating over a 1-D array, each element is accessed one by one:
Output:
Iterating 2-D Arrays
Program:
In a 2-D array, iteration goes through each row:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x in arr:
print(x)
Output:
Program:
To access each scalar value, you can nest loops:
arr = [[1, 2], [3, 4], [5, 6]]
for x in arr:
for y in x:
print(y)
Output:
Iterating 3-D Arrays
In a 3-D array, iteration goes through each 2-D array:
Program:
import numpy as np
arr = np.array([
[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]
])
for x in arr:
print(x)
Output:
Program:
To access individual scalar values, use nested loops:
arr = [
[[1, 2], [3, 4]],
[[5, 6], [7, 8]]
]
for x in arr:
for y in x:
for z in y:
print(z)
Output:
Iterating with np.nditer()
The nditer() function simplifies iterating through each scalar element, especially for high-dimensional arrays.
Program:
import numpy as np
arr = np.array([
[[1, 2], [3, 4]],
[[5, 6], [7, 8]]
])
for x in np.nditer(arr):
print(x)
Output:
Iterating with Data Type Conversion
You can use the op_dtypes argument in nditer() to change data types while iterating.
To enable this, set flags=['buffered'] to allow temporary memory allocation (buffering).
Program:
(iterate as strings):
import numpy as np
arr = np.array([1, 2, 3])
for x in np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
print(x)
Output:
Iterating with Step Sizes
You can use slicing to skip elements during iteration.
Program:
(skip every other element):
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
print(x)
Output:
Enumerated Iteration with np.ndenumerate()
Enumeration means accessing both the index and the value while iterating.
Program:
1-D array
import numpy as np
arr = np.array([1, 2, 3])
for idx, x in np.ndenumerate(arr):
print(idx, x)
Output:
Program:
2-D array
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for idx, x in np.ndenumerate(arr):
print(idx, x)