Understanding how to iterate through arrays is fundamental when working with NumPy. Whether you're dealing with a simple 1D list of numbers or a complex 3D tensor, efficient iteration allows you to manipulate, analyze, and understand your data better.
1D Array Iteration
Let’s start with the most basic structure — a 1-dimensional array.
import numpy as np
arr_1d = np.array([10, 20, 30, 40])
for element in arr_1d:
print(element)
10
20
30
40
Explanation
This is straightforward. The for
loop extracts each value in the 1D array one by one. It behaves just like a Python list during iteration.
2D Array Iteration
Now, let’s add a second dimension. A 2D array in NumPy is essentially a list of lists — or a matrix.
arr_2d = np.array([[1, 2, 3], [4, 5, 6]])
for row in arr_2d:
print("Row:", row)
Row: [1 2 3]
Row: [4 5 6]
Explanation
Each iteration in a 2D array gives you a 1D array — essentially, each row. To access individual elements, you can add a nested loop:
for row in arr_2d:
for item in row:
print(item)
1
2
3
4
5
6
3D Array Iteration
3D arrays can be visualized as a stack of matrices. Each element in the first-level loop gives you a 2D array.
arr_3d = np.array([
[[1, 2], [3, 4]],
[[5, 6], [7, 8]]
])
for matrix in arr_3d:
print("Matrix:
", matrix)
Matrix:
[[1 2]
[3 4]]
Matrix:
[[5 6]
[7 8]]
Nested Iteration
To reach each scalar element in a 3D array, use nested loops:
for matrix in arr_3d:
for row in matrix:
for item in row:
print(item)
1
2
3
4
5
6
7
8
Using NumPy's nditer()
for Universal Iteration
Nested loops can get bulky. NumPy offers np.nditer()
as a neat solution to iterate over any array, regardless of its dimensionality.
for item in np.nditer(arr_3d):
print(item)
1
2
3
4
5
6
7
8
Why use nditer()
?
- It's dimension neutral
- Cleaner code
- Faster performance for large arrays
Best Practices & Gotchas
- Always check array shape before looping, especially for 3D or reshaped arrays.
- Use
nditer()
when possible for clean, readable, and scalable code. - Avoid writing deeply nested loops if you can vectorize or flatten your operations.
- Print intermediate values while debugging or learning — it builds intuition.
Conclusion
Iteration gives you control. Whether you're processing an image pixel-by-pixel or analyzing a dataset row-by-row, understanding how to loop through arrays is basic thing you need. With NumPy’s tools — from simple for
loops to powerful utilities like nditer()
— you can write clean, efficient, and intuitive code.