2024-03-28 21:50:32 发布
网友
如何比较两个以上的numpy数组?在
import numpy a = numpy.zeros((512,512,3),dtype=numpy.uint8) b = numpy.zeros((512,512,3),dtype=numpy.uint8) c = numpy.zeros((512,512,3),dtype=numpy.uint8) if (a==b==c).all(): pass
这会产生一个valueError,我不想一次比较两个数组。在
对于三个数组,可以检查第一个数组和第二个数组之间的对应元素之间的相等性,然后再检查第二个和第三个数组之间的对应元素是否相等,从而得到两个布尔标量,最后看看这两个标量是否都是True的最终标量输出,如下-
True
np.logical_and( (a==b).all(), (b==c).all() )
对于更多的数组,您可以将它们堆叠起来,沿着叠加轴得到微分,然后检查这些微分的所有是否都等于零。如果是,那么所有输入数组都是相等的,否则就不是。执行情况应该是这样的-
为了扩展前面的答案,我将使用combinations中的itertools来构造所有的对,然后对每个对进行比较。例如,如果我有三个数组,并且要确认它们都相等,我会使用:
combinations
itertools
from itertools import combinations for pair in combinations([a, b, c], 2): assert np.array_equal(pair[0], pair[1])
对于三个阵列,一次只需比较两个:
if np.array_equal(a, b) and np.array_equal(b, c): do_whatever()
对于可变数量的数组,假设它们都组合成一个大数组arrays。那你就可以了
arrays
对于三个数组,可以检查第一个数组和第二个数组之间的对应元素之间的相等性,然后再检查第二个和第三个数组之间的对应元素是否相等,从而得到两个布尔标量,最后看看这两个标量是否都是
True
的最终标量输出,如下-对于更多的数组,您可以将它们堆叠起来,沿着叠加轴得到微分,然后检查这些微分的所有是否都等于零。如果是,那么所有输入数组都是相等的,否则就不是。执行情况应该是这样的-
^{pr2}$为了扩展前面的答案,我将使用
combinations
中的itertools
来构造所有的对,然后对每个对进行比较。例如,如果我有三个数组,并且要确认它们都相等,我会使用:对于三个阵列,一次只需比较两个:
对于可变数量的数组,假设它们都组合成一个大数组
^{pr2}$arrays
。那你就可以了相关问题 更多 >
编程相关推荐