两个ndarray之间差异如何找 Python
在Python中,我们经常会使用numpy库来处理数组,其中的ndarray类型是最常用的数组类型。在实际开发中,我们经常会需要比较两个ndarray之间的差异,找出它们之间的不同之处。本文将详细介绍如何找出两个ndarray之间的差异,以帮助读者更好地理解和处理数组数据。
1. 直接比较两个ndarray
最简单粗暴的方法就是直接对两个ndarray进行比较,得到一个布尔数组,告诉我们对应位置上两个ndarray是否相同。
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([1, 2, 6, 4, 5])
diff = arr1 == arr2
print(diff)
运行结果:
[ True True False True True]
上面的代码会输出一个布尔数组,True表示对应位置的元素相同,False表示对应位置的元素不同。
2. 找出不同的元素
如果我们需要找出两个ndarray中不同的元素,可以使用numpy提供的函数来实现,例如np.where
函数。
diff_indices = np.where(arr1 != arr2)
print(diff_indices)
运行结果:
(array([2]),)
上面的代码会输出一个元组,其中第一个元素是一个数组,表示不同元素在ndarray中的索引位置。
3. 比较并找出不同元素
如果我们不仅需要比较两个ndarray的差异,还要找出具体的不同元素,可以联合使用前面提到的方法。
diff_indices = np.where(arr1 != arr2)
diff_elements = arr1[diff_indices[0]]
print(diff_elements)
运行结果:
[3]
上面的代码会输出两个ndarray之间不同的元素,这个示例中,arr1
和arr2
的第三个元素不同。
4. 比较多维数组的差异
以上方法同样适用于多维数组,只需要稍作调整即可。
arr3 = np.array([[1, 2, 3], [4, 5, 6]])
arr4 = np.array([[1, 2, 4], [4, 5, 6]])
diff_indices = np.where(arr3 != arr4)
diff_elements = arr3[diff_indices[0], diff_indices[1]]
print(diff_elements)
运行结果:
[3]
上面的代码也是找出两个多维数组中不同的元素,这个示例中,arr3
和arr4
的第一个子数组的第三个元素不同。
结论
通过本文的介绍,我们学习了如何使用numpy库比较两个ndarray之间的差异,并找出它们之间的不同元素。