NumPy nanmin() 函数
NumPy nanmin() 函数计算数组的最小值,忽略任何 NaN(非数字)值。如果数组中或指定轴上的所有值均为 NaN,则会引发 RuntimeWarning,结果将为 NaN。
当数组中存在正无穷大 (inf) 和负无穷大 (-inf) 时,nanmin() 的行为类似,但会忽略 NaN 值。但是,只要数组中不存在会掩盖计算结果的 NaN 元素,它仍会将 -inf 视为最小可能值(如果存在)。
当输入数组中的任何元素为浮点数时,即使所有值都是整数,nanmin() 函数也会返回浮点数据类型。这确保了与可能包含 NaN、无穷大或小数的数组的兼容性。如果输入数组仅包含整数且不包含 NaN 值,则返回类型与输入的数据类型匹配。
以下是 NumPy nanmin() 函数的语法 -
numpy.nanmin(a, axis=None, out=None, keepdims=False, initial=None, where=True)
参数
以下是 NumPy nanmin() 函数的参数 -
- a:输入数组。该数组可以是任意形状或数据类型,并且可以包含 NaN 值。
- axis(可选):计算最小值的轴。如果为 None,则在展平数组上计算最小值。
- out(可选):用于放置结果的备用输出数组。其形状必须与预期输出相同。
- keepdims(可选):如果为 True,则缩小的维度在输出中保留为大小为 1 的维度。默认值为 False。
- initial(可选):启动比较的初始值。如果未提供,则默认值为该数据类型的最大可能值。
- where(可选):布尔数组。如果为 True,则在计算中包含相应的元素;否则,忽略它。
返回值
此函数返回一个标量值或一个 NumPy 数组,其中包含指定轴上的最小值,忽略 NaN 值。
示例
以下是使用 NumPy nanmin() 函数查找数组中最小值的基本示例,同时忽略 NaN 值 -
import numpy as np # 输入包含 NaN 值的数组 array = np.array([3, np.nan, 1, 7, 9]) # 查找最小值,忽略 NaN min_value = np.nanmin(array) print("最小值(忽略 NaN):", min_value)
输出
以下是上述代码的输出 -
最小值(忽略 NaN):1.0
示例:沿轴求最小值
nanmin() 函数可以查找多维数组中指定轴上的最小值,同时忽略 NaN 值。在以下示例中,我们计算了沿行和列的最小值 -
import numpy as np # 包含 NaN 值的二维输入数组 array = np.array([[3, 7, np.nan], [8, np.nan, 2], [6, 1, 9]]) # 沿行 (axis=1) 的最小值 min_along_rows = np.nanmin(array, axis=1) print("沿行的最小值:", min_along_rows) # 沿列 (axis=0) 的最小值 min_along_columns = np.nanmin(array, axis=0) print("沿列的最小值:", min_along_columns)
输出
以下是上述代码的输出 -
行数最小值:[ 3. 2. 1.] 列数最小值:[ 3. 1. 2.]
示例:使用"keepdims"获取最小值
keepdims 参数将缩减后的维度在输出中保留为一个维度。这意味着,当我们传递一个多维数组并将此参数设置为 True 时,缩减后的维度大小将保持为 1,从而保留数组的原始维度。在以下示例中,我们演示了它的用法 -
import numpy as np # 包含 NaN 值的二维输入数组 array = np.array([[3, np.nan, 5], [8, 4, np.nan], [6, 1, 9]]) # 沿 keepdims=True 的列求最小值 min_with_keepdims = np.nanmin(array, axis=0, keepdims=True) print("使用 keepdims 的最小值: ", min_with_keepdims)
输出
以下是上述代码的输出 -
使用 keepdims 的最小值: [[3. 1. 5.]]
示例:使用 Where 条件计算最小值
where 参数允许根据条件计算最小值。在以下示例中,我们计算了大于 7 的最小元素,同时忽略了 NaN 值 -
import numpy as np # 输入包含 NaN 值的数组 array = np.array([3, 5, np.nan, 7, 9]) min_without_condition = np.nanmin(array) print("无条件最小值(忽略 NaN):", min_without_condition) # where 条件(仅包含大于 7 的值) min_with_condition = np.nanmin(array, where=array > 7, initial=10) print("有条件最小值:", min_with_condition)
输出
以下是上述代码的输出 -
无条件最小值(忽略 NaN):3.0 有条件最小值:9.0
示例:'nanmin()' 的图形表示
在下面的示例中,我们可视化了包含 NaN 值的二维数组的行和列中的最小值。为此,我们需要导入 numpy 和 matplotlib.pyplot 模块 -
import numpy as np import matplotlib.pyplot as plt # 包含 NaN 值的二维输入数组 array = np.array([[3, np.nan, 5], [8, 4, np.nan], [6, 1, 9]]) # 沿行最小值 min_rows = np.nanmin(array, axis=1) # 沿列最小值 min_columns = np.nanmin(array, axis=0) plt.plot(range(len(min_rows)), min_rows, label="沿行最小值(忽略 NaN)") plt.plot(range(len(min_columns)), min_columns, label="沿列的最小值(忽略 NaN)") plt.title("nanmin() 结果可视化") plt.xlabel("索引") plt.ylabel("最小值") plt.legend() plt.grid() plt.show()
输出
该图可视化了数组沿行和列的最小值,忽略了 NaN 值 -

numpy_statistical_functions.html