比较和过滤NumPy数组


NumPy库拥有广泛的工具,可以执行数组的比较和过滤操作。数组的比较将基于数组的维度,逐元素地按行和按列进行。当我们想要检索特定的数组元素时,就可以应用过滤。

NumPy是Numerical Python的缩写,用于对多维数组和矩阵进行数学和科学计算。NumPy中提供了不同的函数和方法来执行数组的过滤和比较。

比较NumPy数组

以下是NumPy库中可用于对数组执行比较操作的方法。

  • equal()

  • greater()

  • array_equal()

  • all_close()

使用equal()方法

NumPy库中的equal()方法逐元素比较两个NumPy数组,并为每次执行的比较返回布尔输出。详细来说,当第一个数组中的一个元素与其在第二个数组中对应的元素进行比较时,如果它们相等则返回“True”值,否则返回“False”。此过程会对这两个数组中的所有元素重复进行。

所有获得的这些布尔值都存储在另一个数组中,并显示为输出。如果输出数组包含所有“True”值,则称这些数组相同,否则为“False”。

示例

让我们来看一个简单的示例,使用equal()方法逐元素比较两个NumPy数组:

import numpy as np
a = np.array([1,2,3])
b = np.array([34,2,10])
out = np.equal(a,b)
print("The Boolean output of the equal function:",out)

输出

以下是将equal函数应用于数组后的输出,我们可以观察到布尔输出。

The Boolean output of the equal function: [False True False]

使用greater()方法

greater()方法用于逐元素比较任意两个NumPy数组。如果第一个数组中的元素大于第二个数组中对应的元素,则此方法返回True;否则返回False。

示例

在这个例子中,我们尝试使用greater()方法比较两个NumPy数组的元素。每次比较后的返回值都存储在另一个数组中。

import numpy as np
a = np.array([1,2,3])
b = np.array([34,2,10])
out = np.greater(a,b)
print("The Boolean output of the greater function:",out)

输出

以下是将greater函数应用于两个数组后的输出。

The Boolean output of the greater function: [False False False]

使用array_equal()方法

array_equal()方法用于逐元素比较两个NumPy数组,以检查这两个数组是否相等。如果两个数组相等,则返回值为True;否则,返回值为False。

注意 - 只有当数组中的所有元素都相等时,这两个数组才被认为是相等的。

示例

当我们将两个形状和大小相同的数组传递给array_equal()函数时,输出将采用布尔格式。

import numpy as np
a = np.array([1,2,3])
b = np.array([34,2,10])
out = np.array_equal(a,b)
print("The Boolean output of the array_equal function:",out)

输出

以下是array_equal()函数的输出。

The Boolean output of the array_equal function: False

使用allclose()方法

allclose()方法逐元素比较两个NumPy数组,并检查哪些元素彼此接近。

示例

在这个例子中,如果我们将两个输入数组传递给allclose()函数,当元素接近时它将返回true,否则返回false。

import numpy as np
a = np.array([1,2,3])
b = np.array([3,4,2])
out = np.allclose(a,b)
print("The Boolean output of the allclose function:",out)

输出

以下是allclose()函数的输出,并返回布尔输出。

The Boolean output of the allclose function: False

过滤NumPy数组

以下是用于对数组执行过滤操作的函数。

  • 布尔索引

  • where()方法

  • extract()方法

  • delete()方法

布尔索引

布尔索引允许我们根据布尔条件从数组中选择元素,即仅提取满足布尔条件的元素。需要用数组元素满足的这个条件也称为布尔掩码。

示例

在这个例子中,我们尝试使用布尔索引检索数组的过滤元素。为了过滤元素,我们将首先创建一个布尔掩码,条件为a > 2,然后提取满足此条件的元素。

import numpy as np
a = np.array([34,2,10])
mask = a > 2
filtered_array = a[mask]
print("The output of the Boolean indexing:",filtered_array)

输出

以下是将布尔索引应用于数组后的输出。

The output of the Boolean indexing: [34 10]

使用where()方法

where()方法用于根据用户给定的条件过滤数组中的元素。它返回满足给定条件的数组元素的索引。

示例

下面的示例演示了如何使用where()方法过滤NumPy数组中的元素。在这里,我们将条件(a>=2)作为参数传递给where()方法,并且只有满足此条件的值才会显示在输出数组中。

import numpy as np
a = np.array([34,2,10])
filtered_array = np.where(a <=2)
print("The output of the where function :",filtered_array)

输出

以下是将where函数应用于输入数组后的输出。

The output of the where function : (array([1]),)

使用extract()方法

顾名思义,extract()方法提取所有满足给定条件的元素。

示例

在这里,我们将数组和条件作为参数传递给extract()函数。预期提取此数组中满足给定条件的元素。

import numpy as np
a = np.array([34,2,10])
filtered_array = np.extract(a <=2, a)
print("The output of the extract function :",filtered_array)

输出

以下是将extract函数应用于给定输入数组后的输出。

The output of the extract function : [2]

使用delete()方法

delete()方法用于根据用户指定的条件从NumPy数组中删除元素。

返回值将是删除给定数组中元素后的数组,具体取决于条件。我们在此方法中使用的条件参数是从where()方法获得的。

示例

在此示例中,当我们将输入数组以及条件(从where()方法获得)传递给delete()方法时,将删除满足给定条件的数组元素。

import numpy as np
a = np.array([34,2,10])
filtered_array = np.delete(a, np.where(a == 2))
print("The output of the delete function :",filtered_array)

输出

以下是delete()函数的输出。

The output of the delete function : [34 10]

更新于:2023年8月7日

438 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告