w3resource

NumPy: Test element-wise of a given array for finiteness, positive or negative infinity, for NaN, for NaT, for negative infinity, for positive infinity


Write a NumPy program to test element-wise of a given array for finiteness (not infinity or not Not a Number), positive or negative infinity, for NaN, for NaT (not a time), for negative infinity, for positive infinity.

Sample Solution:

Python Code:

# Importing the NumPy library
import numpy as np

# Testing element-wise for finiteness (not infinity or not a Not a Number)
print("\nTest element-wise for finiteness (not infinity or not Not a Number):")
print(np.isfinite(1))      # Check if 1 is finite
print(np.isfinite(0))      # Check if 0 is finite
print(np.isfinite(np.nan)) # Check if NaN is finite

# Testing element-wise for positive or negative infinity
print("\nTest element-wise for positive or negative infinity:")
print(np.isinf(np.inf))    # Check if inf is infinite
print(np.isinf(np.nan))    # Check if NaN is infinite
print(np.isinf(np.NINF))   # Check if negative infinity is infinite

# Testing element-wise for NaN (Not a Number)
print("Test element-wise for NaN:")
print(np.isnan([np.log(-1.), 1., np.log(0)]))  # Check if the elements are NaN

# Testing element-wise for NaT (not a time)
print("Test element-wise for NaT (not a time):")
print(np.isnat(np.array(["NaT", "2016-01-01"], dtype="datetime64[ns]")))  # Check for NaT

# Testing element-wise for negative infinity
print("Test element-wise for negative infinity:")
x = np.array([-np.inf, 0., np.inf])
y = np.array([2, 2, 2])
print(np.isneginf(x, y))  # Check for negative infinity

# Testing element-wise for positive infinity
print("Test element-wise for positive infinity:")
x = np.array([-np.inf, 0., np.inf])
y = np.array([2, 2, 2])
print(np.isposinf(x, y))  # Check for positive infinity 

Sample Output:

Test element-wise for finiteness (not infinity or not Not a Number):
True
True
False

Test element-wise for positive or negative infinity:
True
False
True
Test element-wise for NaN:
[ True False False]
Test element-wise for NaT (not a time):
[ True False]
Test element-wise for negative infinity:
[1 0 0]
Test element-wise for positive infinity:
[0 0 1]

Explanation:

In the above code –

print(np.isfinite(1)): This line checks if a given value is finite, returns True if it is, False otherwise. Here, the code checks if 1 is finite, which is True.

print(np.isfinite(0)): Similarly, this code checks if 0 is finite, which is True.

print(np.isfinite(np.nan)): Here, the code checks if np.nan (not-a-number) is finite, which is False.

print(np.isinf(np.inf)): Checks if a given value is positive or negative infinity. Here, the code checks if np.inf is infinite, which is True. print(np.isinf(np.nan)): Similarly, this code checks if np.nan is infinite, which is False.

print(np.isinf(np.NINF)): Checks if a given value is negative infinity. Here, the code checks if np.NINF is infinite, which is True.

print(np.isnan([np.log(-1.),1.,np.log(0)])): Checks if a given value is NaN (not-a-number). Here, the code checks if np.log(-1.),1.,np.log(0) are NaN, which is True for np.log(-1.) and np.log(0).

print(np.isnat(np.array(["NaT", "2016-01-01"], dtype="datetime64[ns]"))): Checks if a given value is a "not a time" (NaT) value. Here, the code checks if the array [ "NaT", "2016-01-01"] is a NaT value, which is True for the first element.

x = np.array([-np.inf, 0., np.inf]) y = np.array([2, 2, 2]) print(np.isneginf(x, y)): Checks if a given value is negative infinity with support for broadcasting. Here, the code checks if -np.inf is a negative infinity with respect to each element of y, which returns an array [ True, False, False ].

x = np.array([-np.inf, 0., np.inf]) y = np.array([2, 2, 2]): This line defines two arrays x and y for the next line of code.

Python-Numpy Code Editor: