NumPy - Min 函数
什么是 Min?
在数学中,"min"(最小值)指的是一组数字中的最小值。它标识最小元素,衡量数据集中的最低点。
例如,在集合 {3, 1, 4, 2} 中,最小值为 1。最小值有助于理解数据集的下限。
NumPy min() 函数
NumPy 中的 min() 函数返回数组中的最小值。它可以应用于整个数组,也可以沿指定轴查找每行或每列中的最小值。
您还可以使用 amin() 函数,它是 min() 函数的别名。以下是 NumPy 中 min() 函数的基本语法 -
numpy.min(a, axis=None, out=None, keepdims=False)
其中:
- a: 需要从中找出最小值的输入数组或数据集。
- axis: 指定计算最小值的轴。如果为 None(默认值),则将在整个数组上计算最小值。
- out: 此项允许您指定存储结果的位置。如果为 None(默认值),则结果将作为新数组返回。
- keepdims: 如果为 True,则缩小的维度将保留在结果中,以便于广播。如果为 False(默认值),则结果将被压缩。
理解最小值计算
计算数据集中的最小值非常简单。该函数扫描数组中的所有元素并找出最小值。此过程可应用于任何形状和大小的数组。
示例
让我们通过一个例子来理解这个概念 -
import numpy as np data = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]) # 计算最小值 min_value = np.min(data) print("最小值:", min_value)
以下是得到的输出 -
最小值:1
沿不同轴计算最小值
在 NumPy 中,axis 参数可用于计算最小值沿多维数组的特定轴。axis 参数指的是应计算最小值的方向。例如,在二维数组中 -
- axis=0: 计算沿列(垂直轴)的最小值。
- axis=1: 计算沿行(水平轴)的最小值。
示例
在以下示例中,我们将计算二维数组两个轴上的最小值 -
import numpy as np # 创建二维数组 data_2d = np.array([[1, 3, 5], [2, 4, 6], [7, 8, 9]]) # 计算沿轴 0(列)的最小值 min_axis_0 = np.min(data_2d, axis=0) # 计算轴 1(行)上的最小值 min_axis_1 = np.min(data_2d, axis=1) print("轴 0 上的最小值:", min_axis_0) print("轴 1 上的最小值:", min_axis_1)
在下面的输出中,轴 0 上的最小值是通过查找每列中的最小元素计算得出的。轴 1 上的最小值是通过查找每行中的最小元素计算得出的 -
轴 0 上的最小值:[1 3 5] 轴 1 上的最小值:[1 2 7]
高维数组的最小值
numpy.min() 函数也适用于二维以上的数组。您可以指定计算最小值的轴,该函数将返回该轴的最小值,同时保留其他维度。如果未指定轴,则计算整个数组的最小值。
示例
以下是计算三维数组最小值的示例 -
import numpy as np # 创建三维数组 data_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 沿轴 0 的最小值 min_3d_axis_0 = np.min(data_3d, axis=0) # 沿轴 1 的最小值 min_3d_axis_1 = np.min(data_3d, axis=1) # 沿轴 2 的最小值 min_3d_axis_2 = np.min(data_3d, axis=2) print("沿轴 0 的最小值:", min_3d_axis_0) print("沿轴 1 的最小值:", min_3d_axis_1) print("沿轴 2 的最小值:", min_3d_axis_2)
在本例中,将计算三维数组沿每个轴(0、1 和 2)的最小值。该函数返回每个指定轴的最小值,同时保留其他维度 -
轴 0 上的最小值:[[1 2] [3 4]] 轴 1 上的最小值:[[1 2] [5 6]] 轴 2 上的最小值:[[1 3] [5 7]]
处理 NaN(非数字)值
有时,数组可能包含 NaN(非数字)值,这可能会干扰最小值的计算。为了处理 NaN 值,NumPy 提供了一个选项,可以在计算最小值时忽略它们。
您可以使用 numpy.nanmin() 函数,该函数可以忽略 NaN 值并计算最小值。
示例
在此示例中,我们在 NumPy 中计算最小值时处理 NaN 值 -
import numpy as np # 创建一个包含 NaN 值的数组 data_with_nan = np.array([1, 3, np.nan, 5, 7]) # 忽略 NaN 值并计算最小值 min_without_nan = np.nanmin(data_with_nan) print("不包含 NaN 的最小值:", min_without_nan)
以下是得到的输出 −
不带 NaN 的最小值:1.0
使用"Out"参数
numpy.min() 函数中的 out 参数允许您将最小值计算的结果存储在预分配的数组中。
处理大型数据集时,这对于内存管理和效率非常有用。结果存储在 out 参数指定的数组中,该数组的形状必须与预期输出相同。
示例
在此示例中,计算数组 data 的最小值并将其存储在预分配的数组 out_array 中,然后打印该数组以显示结果 -
import numpy as np # 创建数组 data = np.array([5, 2, 9, 1, 5, 6]) # 创建输出数组 out_array = np.empty((), dtype=np.int32) # 计算最小值并将其存储在 out_array 中 np.min(data, out=out_array) print("输出数组:", out_array)
以下是获得的输出 -
输出数组:1