w3resource

Apply Mathematical function to Unmasked elements in NumPy Masked array


NumPy: Masked Arrays Exercise-19 with Solution


Write a NumPy program that creates a masked array and applies a mathematical function (e.g., sin, cos) only to the unmasked elements.

Sample Solution:

Python Code:

import numpy as np
import numpy.ma as ma

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

# Define a condition to mask elements less than 20
condition = array_2d < 20

# Create a masked array from the 2D array using the condition
masked_array = ma.masked_array(array_2d, mask=condition)

# Apply the sin function only to the unmasked elements
result_array = ma.sin(masked_array)

# Print the original array, the masked array, and the result array
print('Original 2D array:\n', array_2d)
print('Masked array (values < 20 are masked):\n', masked_array)
print('Result array after applying sin to unmasked elements:\n', result_array)

Output:

Original 2D array:
 [[65 60 56 96 90]
 [ 5  1 50 49  1]
 [12 95 84 46 94]
 [88 40 23 33 23]
 [48 13 72 97 32]]
Masked array (values < 20 are masked):
 [[65 60 56 96 90]
 [-- -- 50 49 --]
 [-- 95 84 46 94]
 [88 40 23 33 23]
 [48 -- 72 97 32]]
Result array after applying sin to unmasked elements:
 [[0.8268286794901034 -0.3048106211022167 -0.5215510020869119
  0.9835877454343449 0.8939966636005579]
 [-- -- -0.26237485370392877 -0.9537526527594719 --]
 [-- 0.683261714736121 0.7331903200732922 0.9017883476488092
  -0.24525198546765434]
 [0.03539830273366068 0.7451131604793488 -0.8462204041751706
  0.9999118601072672 -0.8462204041751706]
 [-0.7682546613236668 -- 0.25382336276203626 0.3796077390275217
  0.5514266812416906]]

Explanation:

  • Import Libraries:
    • Imported numpy as "np" for array creation and manipulation.
    • Imported numpy.ma as "ma" for creating and working with masked arrays.
  • Create 2D NumPy Array:
    • Create a 2D NumPy array named array_2d with random integers ranging from 0 to 99 and a shape of (5, 5).
  • Define Condition:
    • Define a condition to mask elements in the array that are less than 20.
  • Create Masked Array:
    • Create a masked array from the 2D array using ma.masked_array, applying the condition as the mask. Elements less than 20 are masked.
  • Apply Mathematical Function:
    • Apply the sin function to the masked array using ma.sin. This operation applies the function only to the unmasked elements, leaving the masked elements unchanged.
  • Print the original 2D array, the masked array, and the result array after applying the sin function to the unmasked elements.

Python-Numpy Code Editor: