比较和过滤 NumPy 数组

numpyserver side programmingprogramming

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("equal 函数的布尔输出:",out)

输出

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

equal 函数的布尔输出:[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("greater 函数的布尔输出:",out)

输出

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

greater 函数的布尔输出:[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("array_equal 函数的布尔输出:",out)

输出

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

array_equal 函数的布尔输出: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("allclose 函数的布尔输出:",out)

输出

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

allclose 函数的布尔输出: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("布尔索引的输出:",filtered_array)

输出

以下是应用在数组上的布尔索引的输出。

布尔索引的输出:[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("where 函数的输出:",filtered_array)

输出

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

where 函数的输出:(array([1]),)

使用 extract() 方法

extract() 方法提取所有满足给定条件的元素,正如其名称所示意味着。

示例

在这里,我们将一个数组连同条件一起作为参数传递给 extract() 函数。此数组中满足给定条件的元素预计将被提取。

import numpy as np
a = np.array([34,2,10])
filtered_array = np.extract(a <=2, a)
print("提取函数的输出:",filtered_array)

输出

以下是提取函数应用于给定输入数组的输出。

提取函数的输出:[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("删除函数的输出:",filtered_array)

输出

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

删除函数的输出:[34 10]

相关文章