如何比较两个 numpy 数组:示例
您可以使用以下方法来比较两个 NumPy 数组的值:
方法 1:测试两个 NumPy 数组在元素级别是否相等
#test if array A and array B are element-wise equal n.p. array_equal (A,B)
方法 2:测试两个 NumPy 数组在元素级别是否相等(在容差范围内)
#test if array A and array B are element-wise equal (within absolute tolerance of 2) n.p. allclose (A, B, atol= 2 )
以下示例展示了如何在实践中使用每种方法。
示例 1:测试两个 NumPy 数组在元素级别是否相等
以下代码显示如何使用array_equal()函数测试两个 NumPy 数组在元素级别是否相等:
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 5, 7, 10]) #test if arrays are element-wise equal n.p. array_equal (A,B) True
该函数返回True,因为两个 NumPy 数组具有相同的长度,并且在相同位置具有相同的值。
然而,如果两个 NumPy 数组具有相同的值但位置不同,该函数将返回False :
import numpy as np #create two NumPy arrays with same values but in different positions A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 5, 10]) #test if arrays are element-wise equal n.p. array_equal (A,B) False
示例 2:测试两个 NumPy 数组在元素级别是否相等(在容差范围内)
以下代码演示如何使用allclose()函数测试两个 NumPy 数组在元素级别是否相等(容差值2内):
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 8, 10]) #test if arrays are element-wise equal (within absolute tolerance of 2) n.p. allclose (A, B, atol= 2 ) True
该函数返回True ,因为每个 NumPy 数组之间的匹配元素都在 2 以内。
例如,我们看到每个数组的第三个和第四个位置的元素不同,但由于每对相距 2 个值,因此函数返回 true。
但是,如果我们将绝对容差 (atol) 参数更改为1 ,则该函数将返回False :
import numpy as np #create two NumPy arrays A = np. array ([1, 4, 5, 7, 10]) B = np. array ([1, 4, 7, 8, 10]) #test if arrays are element-wise equal (within absolute tolerance of 1) n.p. allclose (A, B, atol= 1 ) False
该函数返回False ,因为每个 NumPy 数组的第三个位置中的对应元素彼此之间的距离不是 1。
注意:有关array_equal和allclose函数的完整说明,请参阅 NumPy 文档。
其他资源
以下教程解释了如何在 NumPy 中执行其他常见任务: