Python 用Numpy测试多个参数的相等性
我想测试多个参数的相等性(即,如果所有参数相等,则返回Python 用Numpy测试多个参数的相等性,python,numpy,Python,Numpy,我想测试多个参数的相等性(即,如果所有参数相等,则返回True;如果至少有一个参数不同,则返回False) 由于numpy.equal只能处理两个参数,我本来会尝试reduce,但显然失败了: reduce(np.equal, (4, 4, 4)) # return False because... reduce(np.equal, (True, 4)) # ... is False 您可以使用np.unique检查数组中唯一项的长度是否为1: np.unique(array).size ==
True
;如果至少有一个参数不同,则返回False
)
由于numpy.equal
只能处理两个参数,我本来会尝试reduce,但显然失败了:
reduce(np.equal, (4, 4, 4)) # return False because...
reduce(np.equal, (True, 4)) # ... is False
您可以使用
np.unique
检查数组中唯一项的长度是否为1:
np.unique(array).size == 1
或np.all()
演示:
这个包有一个内置的函数。请注意,它也适用于多维数组,例如,您可以使用它检查一堆图像是否完全相同
import numpy_indexed as npi
npi.all_equal(array)
如果参数是浮点值,由于舍入错误,相等性测试可能会产生奇怪的结果。在这种情况下,您应该使用更稳健的方法,例如:
注意:Python3用户将需要包括functools import reduce中的语句,因为reduce
不再是Python3中的内置函数。在第二种方法中,您不确定第一个元素是否与其他元素不同。@学习者我们只想检查所有项目是否相等。我的参数是整数,但我会记住您的答案,有一天它可能会有用!
>>> 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
import numpy_indexed as npi
npi.all_equal(array)
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