w3resource

Boolean Indexing on 3D NumPy arrays with conditions


7. 3D Array & Boolean Indexing Along One Axis

Boolean Indexing on Multi-dimensional Arrays:

Write a NumPy program that creates a 3D NumPy array and use boolean indexing to select elements along one axis based on conditions applied to another axis.

Sample Solution:

Python Code:

import numpy as np

# Create a 3D NumPy array of shape (3, 4, 5) with random integers
array_3d = np.random.randint(0, 100, size=(3, 4, 5))

# Define the condition to apply on the second axis (axis 1)
condition = array_3d[:, :, 0] > 50

# Use boolean indexing to select elements along the third axis (axis 2)
selected_elements = array_3d[condition]

# Print the original 3D array and the selected elements
print('Original 3D array:\n', array_3d)
print('Condition array (elements along second axis where first element > 50):\n', condition)
print('Selected elements along third axis based on condition:\n', selected_elements)

Output:

Original 3D array:
 [[[53  8 69 33 11]
  [54 91  9 13 78]
  [92 26  6 24 84]
  [19 21 20 74 24]]

 [[65 46 48 57 31]
  [12 62 64 73 68]
  [55 61 61 62 31]
  [16 34 35 64 25]]

 [[24 85 19 60 27]
  [25 26 59 78 81]
  [89 77 22 29 60]
  [ 9 32 45 62 25]]]
Condition array (elements along second axis where first element > 50):
 [[ True  True  True False]
 [ True False  True False]
 [False False  True False]]
Selected elements along third axis based on condition:
 [[53  8 69 33 11]
 [54 91  9 13 78]
 [92 26  6 24 84]
 [65 46 48 57 31]
 [55 61 61 62 31]
 [89 77 22 29 60]]

Explanation:

  • Import Libraries:
    • Imported numpy as 'np' for array creation and manipulation.
  • Create 3D NumPy Array:
    • Create a 3D NumPy array named array_3d with random integers ranging from 0 to 99 and a shape of (3, 4, 5).
  • Define Condition:
    • Define a condition to apply on the second axis (axis 1) by checking if the first element along the third axis (axis 2) is greater than 50.
  • Boolean Indexing:
    • Applied boolean indexing to select elements along the third axis (axis 2) based on the condition applied to the second axis (axis 1).
  • Print Results:
    • Print the original 3D array, the condition array, and the selected elements to verify the indexing operation.

For more Practice: Solve these Related Problems:

  • Create a 3D array and use boolean indexing on one axis to select entire subarrays that meet a condition on their first element.
  • Write a function that filters slices of a 3D array based on whether the sum of elements in each slice exceeds a threshold.
  • Implement a solution that applies a condition on the second axis of a 3D array and extracts corresponding elements from the third axis.
  • Use boolean indexing to replace entire slices of a 3D array that do not meet a given criterion with zeros.

Python-Numpy Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Select elements from 2D NumPy array using integer Indexing.
Next: Index and select elements in 2D NumPy Array using Tuple of arrays

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.