NumPy - Max
什么是 Max?
在数学中,"max"(最大值)指的是一组数字中的最大值。它表示最大的元素,衡量数据集中的最高点。
例如,在集合 {3, 1, 4, 2} 中,最大值为 4。最大值有助于理解数据集的上限。
NumPy max() 函数
NumPy 中的 max() 函数返回数组中的最大值。它可以应用于整个数组,也可以沿指定的轴查找每行或每列中的最大值。
您还可以使用 amax() 函数,它是 max() 函数的别名。以下是 NumPy 中 max() 函数的基本语法 -
numpy.max(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]) # 计算最大值 max_value = np.max(data) print("最大值:", max_value)
这将产生以下结果 -
最大值:9
沿不同轴计算最大值
在 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(列)的最大值 max_axis_0 = np.max(data_2d, axis=0) # 计算轴 1(行)上的最大值 max_axis_1 = np.max(data_2d, axis=1) print("轴 0 上的最大值:", max_axis_0) print("轴 1 上的最大值:", max_axis_1)
在下面的输出中,轴 0 上的最大值是通过查找每列中的最大元素来计算的。轴 1 上的最大值是通过查找每行中的最大元素来计算的 -
轴 0 上的最大值:[7 8 9] 轴 1 上的最大值:[5 6 9]
高维数组的最大值
numpy.max() 函数也适用于二维以上的数组。您可以指定计算最大值的轴,函数将返回该轴的最大值,同时保留其他维度。如果未指定轴,则计算整个数组的最大值。
示例
以下是计算三维数组最大值的示例 -
import numpy as np # 创建三维数组 data_3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 轴 0 上的最大值 max_3d_axis_0 = np.max(data_3d, axis=0) # 轴 1 上的最大值 max_3d_axis_1 = np.max(data_3d, axis=1) # 轴 2 上的最大值 max_3d_axis_2 = np.max(data_3d, axis=2) print("轴 0 上的最大值:", max_3d_axis_0) print("轴 1 上的最大值:", max_3d_axis_1) print("轴 2 上的最大值:", max_3d_axis_2)
在本例中,最大值是沿着每个轴计算的三维数组的轴(0、1 和 2)。该函数返回每个指定轴的最大值,同时保留其他维度 -
轴 0 上的最大值:[[5 6] [7 8]] 轴 1 上的最大值:[[3 4] [7 8]] 轴 2 上的最大值:[[2 4] [6 8]]
处理 NaN(非数字)值
有时,数组可能包含 NaN(非数字)值,这可能会干扰最大值的计算。为了处理 NaN 值,NumPy 提供了一个选项,可以在计算最大值时忽略它们。
您可以使用 numpy.nanmax() 函数,该函数会在计算最大值的同时忽略 NaN 值。
示例
在此示例中,我们在 NumPy 中计算最大值时处理 NaN 值 -
import numpy as np # 创建一个包含 NaN 值的数组 data_with_nan = np.array([1, 3, np.nan, 5, 7]) # 计算最大值并忽略 NaN 值 max_without_nan = np.nanmax(data_with_nan) print("不包含 NaN 的最大值:", max_without_nan)
执行上述代码后,我们得到以下输出 -
不带 NaN 的最大值:7.0
使用 Out 参数
numpy.max() 函数中的 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.max(data, out=out_array) print("输出数组:", out_array)
生成的结果如下 -
输出数组:9