NumPy nanmax – 忽略任何 NaN 的沿轴的数组最大值

您好,欢迎来到本关于 Numpy nanmax的教程。在本教程中,我们将学习 NumPy nanmax() 方法,并看到很多相关示例。那么让我们开始吧!

另请阅读:  NumPy amax – 沿轴的最大值数组的最大值


什么是 NumPy nanmax?

在 Python 中,  NaN 表示 不是数字如果我们有一个包含一些 NaN 值的数组,并且想要找到其中的最大值,我们可以使用 nanmax() NumPy 中的方法。

NumPy 中的方法 nanmax() 是一个函数,它返回通过忽略数组中的 NaN 值计算出的数组元素的最大值。它可以是所有数组元素的最大值、沿行的数组元素的最大值或沿列的数组元素的最大值。 

我们将在本教程的后续部分中看到每个示例的示例。


NumPy nanmax 的语法

让我们看一下该 nanmax() 函数的语法。

numpy.nanmax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
范围 描述 必需/可选
一个(类似数组) 输入数据。 必需的
计算数组最大值的轴。
它可以是 axis=0 或 axis=1 或 axis=None ,这意味着要返回整个数组的最大值。
选修的
出去 用于放置结果的替代输出数组。它必须具有与预期输出相同的形状。 选修的
keepdims(布尔值) 如果将此设置为 True,则缩小的轴将作为大小为 1 的维度保留在结果中。使用此选项,结果将针对输入数组正确广播。 选修的
最初的 输出元素的最小值。 选修的
在哪里 要比较以查找最大值的元素。 选修的

返回:
一个数组,包含数组沿指定轴的最大值,忽略所有 NaN。


NumPy nanmax 的示例

让我们直接进入使用 numpy.nanmax() 函数的不同示例。

一维数组的 Nanmax

import numpy as np
 
arr = [5, 32, 10, np.nan, 4]
# using the nanmax function to calculate the maximum
ans = np.nanmax(arr)
 
print("arr =", arr)
print("Result =", ans)

输出:

arr = [5, 32, 10, nan, 4]
Result = 32.0

忽略 NaN 值,5、32、10 和 4 中的最大值为 32,因此返回。


二维数组的 Nanmax

import numpy as np
 
arr = [[-12, 3], [np.nan, 36]]
# using the nanmax function to calculate the maximum
ans = np.nanmax(arr)
 
print("arr =", arr)
print("Result =", ans)

输出:

arr = [[-12, 3], [nan, 36]]
Result = 36.0

与前面的示例类似,-12、3 和 36 的最大值为 36。


Nanmax 沿阵列轴

轴 = 0

import numpy as np
 
arr = [[5, 8], [np.nan, 36]]
# using the nanmax function to calculate the maximum
ans = np.nanmax(arr, axis=0)
 
print("arr =", arr)
print("Result =", ans)

输出:

arr = [[5, 8], [nan, 36]]
Result = [ 5. 36.]

此处,对特定列的每行中的值进行比较以找到最大元素。

ans[0] = max(arr[0][0], arr[1][0]) = max(5, np.nan) = 5 (ignoring NaN)
ans[1] = max(arr[0][1], arr[1][1]) = max(8, 36) = 36

轴 = 1

import numpy as np
 
arr = [[5, 8], [np.nan, 36]]
# using the nanmax function to calculate the maximum
ans = np.nanmax(arr, axis=1)
 
print("arr =", arr)
print("Result =", ans)

输出:

arr = [[5, 8], [nan, 36]]
Result = [ 8. 36.]

axis=1时,每行中的元素在所有列上进行比较以找到最大值。

ans[0] = max(arr[0][0], arr[0][1]) = max(5, 8) = 8
ans[1] = max(arr[1][0], arr[1][1]) = max(np.nan, 36) = 36 (ignoring NaN)

包含无穷大的数组的 NumPy nanmax

现在让我们看看该numpy.nanmax()方法如何处理数组中的无穷大和 NaN。

import numpy as np
  
# array containing +infinity
a = np.array([25, np.nan, 36, np.inf, 8])
# array containing -infinity
b = np.array([25, np.nan, 36, np.NINF, 8])
# array containing +infinity and -infinity
c = np.array([25, np.nan, 36, np.inf, np.NINF, 8])
  
max_a = np.nanmax(a)
max_b = np.nanmax(b)
max_c = np.nanmax(c)
  
print("a =", a)
print("Maximum of the array a =", max_a)
print("\nb =", b)
print("Maximum of the array b =", max_b)
print("\nc =", c)
print("Maximum of the array c =", max_c)

输出:

a = [25. nan 36. inf  8.]
Maximum of the array a = inf
 
b = [ 25.  nan  36. -inf   8.]
Maximum of the array b = 36.0
 
c = [ 25.  nan  36.  inf -inf   8.]
Maximum of the array c = inf

在上面的代码中,NINF表示-infinityinf表示infinity注意,

  • 如果数组包含正无穷大,则最大值为正无穷大
  • 如果数组包含负无穷大,则最大值是所有元素的最大值,忽略 NaN
  • 如果数组同时包含正无穷大和负无穷大,则数组的最大值为inf,即正无穷大

概括

就这样!在本教程中,我们了解了 Numpy nanmax 方法,并使用该方法练习了不同类型的示例。
如果您想了解有关 NumPy 的更多信息,请随时阅读我们的 NumPy 教程


参考