我需要知道numpy数组中的所有元素是否都等于一个数字那就像:
numpy
numbers = np.zeros(5) # array[0,0,0,0,0] print numbers.allEqual(0) # return True because all elements are 0
我可以做一个算法,但是,有一些方法在numpy库中实现?
xkrw2x1b1#
你可以把它分解成np.all(),它接受一个布尔数组,并检查它是否都是True,以及一个相等比较:
np.all()
True
np.all(numbers == 0) # or equivalently (numbers == 0).all()
bqf10yzr2#
如果要比较浮点数,请改用np.isclose:
np.isclose
np.all(np.isclose(numbers, numbers[0]))
lstz6jyr3#
np.array_equal()也可以工作(对于Python 3)。
np.array_equal()
tmp0 = np.array([0]*5) tmp1 = np.array([0]*5) np.array_equal(tmp0, tmp1)
返回True
rjee0c154#
下列版本会检查数组中所有项目的相等性,而不需要重复的数字。
numbers_0 = np.zeros(5) # array[0,0,0,0,0] numbers.ptp() == 0.0 # True # checking an array having some random repeating entry numbers_r = np.ones((10, 10))*np.random.rand() numbers_r.ptp() == 0.0 # True
bgibtngc5#
numpy方法是必要的吗?如果所有元素都等于一个数字,那么所有元素都是相同的。你可以做下面的事情,这就利用了短路。
numbers[0] == 0 and len(set(numbers)) == 1
这种方式比使用np.all()更快
5条答案
按热度按时间xkrw2x1b1#
你可以把它分解成
np.all()
,它接受一个布尔数组,并检查它是否都是True
,以及一个相等比较:bqf10yzr2#
如果要比较浮点数,请改用
np.isclose
:lstz6jyr3#
np.array_equal()
也可以工作(对于Python 3)。返回
True
rjee0c154#
下列版本会检查数组中所有项目的相等性,而不需要重复的数字。
bgibtngc5#
numpy方法是必要的吗?如果所有元素都等于一个数字,那么所有元素都是相同的。你可以做下面的事情,这就利用了短路。
这种方式比使用
np.all()
更快