theme: healer-readable highlight: atom-one-dark
NumPy Array Iteration
NumPy array iteration is an important method for accessing and processing array elements. It allows you to traverse array elements one by one or in groups.
Basic Iteration
We can use Python's basic for loop to iterate over NumPy arrays.
1D array iteration:
import numpy as nparr = np.array([1, 2, 3, 4, 5])
for element in arr:
print(element)
2D array iteration:
import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
for row in arr:
for element in row:
print(element)
Multidimensional array iteration:
For higher-dimensional arrays, we can use nested loops to iterate through each dimension.
import numpy as nparr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
for cube in arr:
for row in cube:
for element in row:
print(element)
Advanced Iteration with nditer()
NumPy provides the np.nditer() function for more complex iteration operations. It allows you to:
Specify iteration order: The order parameter can be 'C' (row-major) or 'F' (column-major).
Filter elements: The flags parameter can include flags like 'filtering' and 'slicing' to filter elements.
Convert data types: The op_dtypes parameter can specify the data type of elements during iteration.
Use step sizes: The axes and step parameters can be used to specify iteration step sizes.
Example:
import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])
Iterate over each element and convert it to a string
for element in np.nditer(arr, op_dtypes=[‘S’]):
print(element)
Example:
import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])
Iterate over rows, skipping the first element
for row in np.nditer(arr[:, 1:], flags=[‘slicing’]):
print(row)
Example:
import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])
Iterate over columns, taking every other element
for column in np.nditer(arr[:, ::2], flags=[‘slicing’]):
print(column)
Enumerated Iteration with ndenumerate()
The np.ndenumerate() function returns each element along with its index.
Example:
import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])
for (row_idx, col_idx), element in np.ndenumerate(arr):
print(f"({row_idx}, {col_idx}): {element}")
Exercises
Complete the following tasks using NumPy array iteration:
- Create a 3x3 2D array and print each element.
- Create a 5x5x5 3D array and print the coordinates and values of each element.
- Create a 1D array with 10 elements and calculate the average of the array elements.
- Create a 2x2 2D array and transpose it (swap rows and columns).
- Create a 3x4 2D array and stack two such arrays along axis 1 (rows).
Share your code and output in the comments.
Sure, here is the requested Markdown formatted content:
NumPy Array Merging
NumPy provides a variety of functions for merging arrays, used to concatenate the contents of multiple arrays into a single new array.
Merging Arrays
The np.concatenate() function is used to connect multiple arrays along a specified axis.
Syntax:
np.concatenate((arr1, arr2, ..., arrN), axis=None)
arr1, arr2, ..., arrN: The arrays to merge. axis: The axis along which to connect. Defaults to 0.
Example:
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])Merge two 1D arrays
arr = np.concatenate((arr1, arr2))
print(arr) # Output: [1 2 3 4 5 6]Merge two 2D arrays along rows
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.concatenate((arr1, arr2), axis=1)
print(arr) # Output: [[ 1 2 5 6]
# [ 3 4 7 8]]
Stacking Arrays
The np.stack() function is used to stack multiple arrays along a new axis.
Syntax:
np.stack((arr1, arr2, ..., arrN), axis=None)
arr1, arr2, ..., arrN: The arrays to stack. axis: The axis along which to stack. Defaults to 0.
Example:
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])Stack two 1D arrays along the second axis
arr = np.stack((arr1, arr2), axis=1)
print(arr) # Output: [[1 4]
# [2 5]
# [3 6]]Stack along rows
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
arr = np.stack((arr1, arr2), axis=0)
print(arr) # Output: [[1 2]
# [3 4]
# [5 6]
# [7 8]]
Helper Functions
NumPy provides some helper functions to facilitate stacking operations on common axes:
np.hstack(): Stack arrays horizontally (along rows).
np.vstack(): Stack arrays vertically (along columns).
np.dstack(): Stack arrays along the third axis (depth).
Example:
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])Stack along rows
arr = np.hstack((arr1, arr2))
print(arr) # Output: [1 2 3 4 5 6]Stack along columns
arr = np.vstack((arr1, arr2))
print(arr) # Output: [[1 4]
# [2 5]
# [3 6]]
Exercises
Use the correct NumPy method to merge the following arrays arr1 and arr2 into a new array.
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])Expected output: [1 4 2 5 3 6]
Share your code and output in the comments.
Finally
To make it easier for users on other devices and platforms to read past articles:
Search WeChat official account: Let us Coding, follow it to get the latest article updates
If you found this helpful, please like, save, and follow.
This is a discussion topic separated from the original thread at https://juejin.cn/post/7368637177428492288