w3resource

Filter records by age in NumPy Structured array


NumPy: Structured Arrays Exercise-5 with Solution


Filtering records:

Write a NumPy program to filter and print all records where the 'age' field is greater than 25 from the structured array created with fields for 'name' (string), 'age' (integer), and 'height' (float).

Sample Solution:

Python Code:

import numpy as np

# Define the data type for the structured array
dtype = [('name', 'U10'), ('age', 'i4'), ('height', 'f4')]

# Create the structured array with sample data
structured_array = np.array([
    ('Lehi Piero', 25, 5.5),
    ('Albin Achan', 30, 5.8),
    ('Zerach Hava', 35, 6.1),
    ('Edmund Tereza', 40, 5.9),
    ('Laura Felinus', 28, 5.7)
], dtype=dtype)

print("Original Structured Array:")
print(structured_array)

# Filter the records where the 'age' field is greater than 25
filtered_records = structured_array[structured_array['age'] > 25]

# Print the filtered records
print("\nFiltered Records (age > 25):")
print(filtered_records)

Output:

Original Structured Array:
[('Lehi Piero', 25, 5.5) ('Albin Acha', 30, 5.8) ('Zerach Hav', 35, 6.1)
 ('Edmund Ter', 40, 5.9) ('Laura Feli', 28, 5.7)]

Filtered Records (age > 25):
[('Albin Acha', 30, 5.8) ('Zerach Hav', 35, 6.1) ('Edmund Ter', 40, 5.9)
 ('Laura Feli', 28, 5.7)]

Explanation:

  • Import Libraries:
    • Imported numpy as "np" for array creation and manipulation.
  • Define Data Type:
    • Define the data type for the structured array using a list of tuples. Each tuple specifies a field name and its corresponding data type. The data types are:
      • 'U10' for a string of up to 10 characters.
      • 'i4' for a 4-byte integer.
      • 'f4' for a 4-byte float.
  • Create Structured Array:
    • Created the structured array using np.array(), providing sample data for five individuals. Each individual is represented as a tuple with values for 'name', 'age', and 'height'.
  • Filter Records:
    • Filter the records where the 'age' field is greater than 25 using structured_array['age'] > 25 as the condition. The filtered records are stored in filtered_records.
  • Print Filtered Records:
    • Print the filtered records to display only those individuals whose age is greater than 25.

Python-Numpy Code Editor: