w3resource

Rename fields in NumPy Structured array


NumPy: Structured Arrays Exercise-13 with Solution


Renaming Fields:

Write a NumPy program to rename the 'height' field to 'stature' in the structured array 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)

# Rename the 'height' field to 'stature'
new_dtype = [('name', 'U10'), ('age', 'i4'), ('stature', 'f4')]

# Create a new structured array with the new dtype
renamed_array = np.empty(structured_array.shape, dtype=new_dtype)

# Copy data from the old array to the new array
for field in structured_array.dtype.names:
    renamed_array[field if field != 'height' else 'stature'] = structured_array[field]

# Print the new structured array with renamed fields
print("\nStructured Array with 'height' field renamed to 'stature':")
print(renamed_array)

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)]

Structured Array with 'height' field renamed to 'stature':
[('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)]

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 a 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'.
  • Rename Field:
    • Defined a new data type new_dtype with the 'height' field renamed to 'stature'.
    • Create a new empty structured array renamed_array with the new data type.
  • Copy Data:
    • Used a loop to copy data from the original array to the new array, renaming the 'height' field to 'stature' during the process.
  • Finally print the new structured array to verify that the 'height' field has been successfully renamed to 'stature'.

Python-Numpy Code Editor: