要比较两个NumPy数组,可以使用NumPy中的比较函数,这些函数返回一个布尔数组,该数组表示每个元素是否满足比较条件。下面是一些常用的比较函数:
numpy.array_equal(x, y)
: 如果两个数组x和y的形状和元素的值都相等,则返回True,否则返回False。numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)
: 比较两个数组a和b是否在给定的容差范围内相等。默认情况下,相对容差rtol设置为1e-05,绝对容差atol设置为1e-08,如果任何一个元素之间的差异大于容差,则返回False。可以通过设置equal_nan参数为True来比较NaN值的相等性。
例如,我们创建两个数组arr1和arr2:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([1, 2, 3])
现在我们使用numpy.array_equal
函数比较这两个数组是否相等:
print(np.array_equal(arr1, arr2)) # True
由于这两个数组的形状和元素的值都相等,因此返回True。
现在我们把数组arr1和arr2的第一个元素修改为不同的值:
arr1[0] = 10
print(np.array_equal(arr1, arr2)) # False
现在这两个数组的第一个元素不相等,因此返回False。
我们也可以使用numpy.allclose
函数比较这两个数组是否相等,在这里我们设置容差范围为1:
print(np.allclose(arr1, arr2, atol=1, rtol=0)) # False
由于数组arr1和arr2的形状和元素的值都相等,但是它们的第一个元素的差异(10-1)大于容差范围(1),因此返回False。
另外,如果两个数组有NaN值,我们可以使用numpy.isnan
函数比较它们是否相等:
arr1[0] = np.nan
arr2[0] = np.nan
print(np.allclose(arr1, arr2, equal_nan=True)) # True
现在这两个数组的第一个元素都是NaN值,因此返回True。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何比较两个NumPy数组 - Python技术站