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
import numpy as np
a = np.arange(3)
b = np.arange(3)
c = np.arange(3)
d = np.arange(4)
lst_eq = [a, b, c]
lst_neq = [a, b, d]
def all_equal(lst):
for arr in lst[1:]:
if not np.array_equal(lst[0], arr, equal_nan=True):
return False
return True
print('all_equal(lst_eq)=', all_equal(lst_eq))
print('all_equal(lst_neq)=', all_equal(lst_neq))
6条答案
按热度按时间s1ag04yj1#
对于三个数组,你可以检查第一个和第二个数组,然后是第二个和第三个数组的对应元素是否相等,给予两个布尔标量,最后看看这两个标量是否都是
True
,作为最终的标量输出,就像这样--对于更多数量的数组,你可以把它们堆叠起来,沿着堆叠的轴得到微分,然后检查这些微分是否所有都等于零。如果是,我们就在所有输入数组中得到相等,否则就不是。实现看起来像这样--
vltsax252#
对于三个数组,您实际上应该一次比较两个数组:
对于一个可变数量的数组,假设它们都被合并成一个大数组
arrays
。vqlkdk9b3#
为了扩展前面的答案,我将使用
itertools
中的combinations
来构造所有对,然后对每一对进行比较。例如,如果我有三个数组,并希望确认它们都相等,我将用途:z9smfwbn4#
支持不同形状和名称的解决方案
与数组列表的第一个元素比较:
表示形状相同且无纳米支撑
将所有元素合并到一个数组中,计算沿新轴的绝对差异,并检查沿新维度的最大元素是否等于0或小于某个阈值,这应该是相当快的。
vqlkdk9b5#
这可能有用。
7ajki6be6#
一行程序: