平等我想测试多个args来平等(即它应该返回True
如果所有ARGS相等并且False
如果至少一个参数不同)。测试的多个参数与numpy的
由于numpy.equal
只能处理两个参数,我会试图减少,但很明显,失败:
reduce(np.equal, (4, 4, 4)) # return False because...
reduce(np.equal, (True, 4)) # ... is False
平等我想测试多个args来平等(即它应该返回True
如果所有ARGS相等并且False
如果至少一个参数不同)。测试的多个参数与numpy的
由于numpy.equal
只能处理两个参数,我会试图减少,但很明显,失败:
reduce(np.equal, (4, 4, 4)) # return False because...
reduce(np.equal, (True, 4)) # ... is False
您可以使用np.unique
来检查,如果你的阵列内的唯一项目长度为1:
np.unique(array).size == 1
,以检查是否所有的项目都是平等的与你的项目之一(例如第一个)
或者
演示:
>>> a = np.array([1, 1, 1, 1])
>>> b = np.array([1, 1, 1, 2])
>>> np.unique(a).size == 1
True
>>> np.unique(b).size == 1
False
>>> np.all(a==a[0])
True
>>> np.all(b==b[0])
False
的numpy_indexed包具有用于此内置函数。请注意,它也适用于多维数组,也就是说,例如,您可以使用它来检查一堆图像是否完全相同。
import numpy_indexed as npi
npi.all_equal(array)
如果您的参数是浮点值,则由于四舍五入误差,相等性测试可能会产生奇怪的结果。在这种情况下,你应该使用更可靠的方法,例如numpy.allclose
:
In [636]: x = [2./3., .2/.3]
In [637]: x
Out[637]: [0.6666666666666666, 0.6666666666666667]
In [638]: xarr = np.array(x)
In [639]: np.unique(xarr).size == 1
Out[639]: False
In [640]: np.all(xarr == xarr[0])
Out[640]: False
In [641]: reduce(np.allclose, x)
Out[641]: True
注: Python 3的用户将需要包括句子from functools import reduce
因为reduce
不再在Python 3内置的功能。
我的参数是整数,但我会记住您的答案,有一天它可能会有用! – floflo29
在第二种方法中,您不确定第一个元素是否与其他元素不同。 – Learner
@Learner我们只是想检查所有项目是否相等。 – Kasramvd