在本教程中,我将解释如何使用Numpy的maximum函数来计算两个Numpy数组的元素间最大值。
我将解释np.maximum的语法,该函数如何工作,以及如何使用它。
如果你需要特定的东西,只需点击以下任何一个链接。
目录:
让我们先快速介绍一下这个函数。
Numpy Maximum的快速介绍
Numpy的maximum函数在Python中计算两个输入数组或值的逐个元素的最大值。

说到这里,它也会对其他一些输入类型进行操作,比如标量值,以及不同类型的Numpy数组。 我将在语法部分进一步解释这些操作,并在例子部分向你展示。
Numpy最大值与Numpy最大值不同
有一个非常简短的注意事项。
Numpy的max函数与Numpy的max函数是不同的。
Numpy max函数用于识别Numpy数组中的最大值。 所以np.max通常接受一个Numpy数组作为输入,并将返回最大值(尽管有一些使用它的方法,它将返回行或列的最大值)。
相比之下,Numpy maximum(我们在本教程中讨论的是它)计算的是两个数组的元素间最大值。 所以np.maximum通常将两个Numpy数组作为输入,并将返回一个数组,其中包含每一对值的元素间最大值。(当然,还有一些额外的使用方法,我稍后会介绍)。
np.max和np.max的工作方式不同,所以要确保你使用正确的那一个。
好的。 现在我们已经谈到了Numpy maximum的作用,让我们看看它的语法。
np.maximum的语法
Numpy maximum的语法很简单。

请记住:这个语法假设你已经用别名np ,导入了Numpy。
输入数组的格式
在这里,我想补充一些关于两个输入的格式的说明。
在上面解释语法的图片中,我显示了两个输入(即参数)。 在语法解释中,我将这些参数称为arr1 和arr1 。
我还指出,这些通常是Numpy数组。
说到这里,np.maximum将对各种输入进行操作。
具体来说,np.maximum会在以下情况下工作。
- 两个同样大小的Numpy数组
- 两个数字
- 一个数字和一个Numpy数组
- 一个Numpy数组和另一个尺寸较小的数组
此外,np.max可以对类似数组的对象进行操作,如列表和图元。
np.maximum的输出
np.maximum的输出通常是一个新的Numpy数组,其中包含元素的最大值,不过也有一些注意事项。
如果输入是两个标量值,输出将是一个标量(而不是一个数组)。
此外,如果输入是一个Numpy数组和一个低维数组,那么np.maximum将产生一个新的数组,但它将执行 "广播"。广播可能会让Numpy的新用户感到困惑,所以我将在例子部分展示一个例子。
额外的参数
除了两个输入数组外,Numpy maximum函数还有两个可选参数。
- out
- 其中
这些参数很少使用,所以我不会在本教程中解释它们。
例子:如何在数字和Numpy数组上使用Numpy最大值
现在我们已经了解了语法,让我们通过一些例子来了解如何使用Numpy maximum函数。
例子
- 在两个标量上使用Numpy maximum
- 在一个数组和一个标量上使用Numpy的最大值
- 在两个相同大小的Numpy数组上使用Numpy最大值
- 通过广播在不同大小的Numpy数组上使用Numpy的最大值
初步代码:导入Numpy和创建数组
在你运行这些例子之前,你需要做一些事情来进行设置。
你需要导入Numpy。
你还需要创建一些Numpy数组,以便我们在例子中使用。
导入Numpy
首先,我们需要导入Numpy。
你可以用下面这段代码导入Numpy。
import numpy as np
创建数组
接下来,我们需要创建一些Numpy数组,以便在我们的例子中使用。
具体来说,我们将创建三个数组。
- 一个一维的数字 "向量"。
- 一个由1到9的数字组成的2维 "矩阵"(有序)
- 一个由1到9的数字组成的二维 "矩阵"(随机)。
为了制作这些,我们将使用一些不同的Numpy函数。
我们将使用np.array来手动定义一维值的向量(1、2和3)。
我们将使用Numpy arange来制作一个带有数字序列的数组。 这个数组将被称为 numbers_negative4_to_4 。(我们不会在我们的例子中直接使用它,但我们将用它来创建接下来的几个数组。)
我们将创建一个有序的二维数字数组,称为matrix_2d_ordered 。 为了创建这个数组,我们将在 numbers_negative4_to_4 ,使用Numpy reshape。
最后,我们将创建一个随机的二维数组,称为matrix_2d_random 。 为了创建这个数组,我们将在numbers_negative4_to_4 上使用Numpy random choice。
(如果这些让你感到困惑,我建议你点击上面几段中的链接......它们会解释这些函数是如何工作的。)
vector_1d = np.array([1,2,3])
# CREATE 2D MATRIX OF NUMBERS, 1 TO 9
numbers_negative4_to_4 = np.arange(start = -4, stop = 5)
matrix_2d_ordered = numbers_negative4_to_4.reshape((3,3))
# CREATE 2D MATRIX OF NUMBERS, 1 TO 9, RANDOMIZED
np.random.seed(22)
matrix_2d_random = np.random.choice(size = (3,3), a = numbers_negative4_to_4, replace = False)
一旦你运行了所有这些代码,你就可以准备运行这些例子了。
例子1:在两个标量上使用Numpy最大值
让我们从一个简单的例子开始。
这里,我们将在两个标量值上使用Numpy的最大值。
np.maximum(0,4)
输出
4
解释
这是很简单的。
在这里,我们要计算0和4的最大值,也就是4。
实例2:在一个数组和一个标量上使用np.maximum
接下来,我们将在一个数组和一个标量上使用np.maximum。
np.maximum(matrix_2d_ordered, 0)
输出
array([[0, 0, 0],
[0, 0, 1],
[2, 3, 4]])
解释
Numpy数组matrix_2d_ordered ,包含了从4到4的数字,排列在一个3×3的数组中。
在这里,我们使用np.maximum来计算matrix_2d_ordered 中每个元素的最大值,以及0。
matrix_2d_ordered 的一些值是负的。 对于这些值,np.maximum返回0。 对于其余的值,它返回 matrix_2d_ordered 的原始值。
(注意,这个操作本质上是relu函数。
实例3:在两个同样大小的数组上使用Numpy Maximum
接下来,让我们在两个同样大小的数组上使用np.maximum。
具体来说,我们将在matrix_2d_random 和matrix_2d_ordered 上使用 np.maximum 。
np.maximum(matrix_2d_ordered, matrix_2d_random)
输出
array([[ 4, -3, -1],
[-1, 2, 1],
[ 3, 3, 4]])
解释
在这里,np.max正在计算matrix_2d_random 和matrix_2d_ordered 的元素最大值。

此外,注意输出的形状。输出的Numpy数组与输入数组的大小和形状相同。 这就是np.maximum在我们给它两个同样大小的数组时的表现。
实例4:在一个二维数组和一个一维数组上使用Numpy maximum(即广播)
最后,让我们在一个一维Numpy数组(即一个矢量)和一个二维Numpy数组(即一个矩阵)上使用np.maximum。
np.maximum(matrix_2d_ordered, vector_1d)
输出
array([[1, 2, 3],
[1, 2, 3],
[2, 3, 4]])
解释
在这个例子中,我们在matrix_2d_ordered 的行上 "广播 "了vector_1d 。
什么是广播?
注意,两个数组的列数相同,但行数不同。 这使得Numpy可以使用一维数组的值来操作二维数组的每一行。
这里,np.maximum将一维数组 "广播 "到二维数组的各行中。
所以np.maximum计算了vector_1d 和matrix_2d_ordered 第1行的元素最大值。然后它计算了vector_1d 和matrix_2d_ordered 第2行的元素最大值。以此类推。

请记住,只有当vector_1d 中的元素数与matrix_2d_ordered 中的列数相同时,这才有可能。只有当两个输入中的元素数都是适当的形状时,广播才能正常运行。
在本教程中,我已经解释了如何用np.maximum计算元素间的最大值。