Numpy:如何判断numpy数组的所有元素是否都等于一个数字

slsn1g29  于 2022-11-24  发布在  其他
关注(0)|答案(5)|浏览(728)

我需要知道numpy数组中的所有元素是否都等于一个数字
那就像:

numbers = np.zeros(5) # array[0,0,0,0,0]
print numbers.allEqual(0) # return True because all elements are 0

我可以做一个算法,但是,有一些方法在numpy库中实现?

xkrw2x1b

xkrw2x1b1#

你可以把它分解成np.all(),它接受一个布尔数组,并检查它是否都是True,以及一个相等比较:

np.all(numbers == 0)
# or equivalently
(numbers == 0).all()
bqf10yzr

bqf10yzr2#

如果要比较浮点数,请改用np.isclose

np.all(np.isclose(numbers, numbers[0]))
lstz6jyr

lstz6jyr3#

np.array_equal()也可以工作(对于Python 3)。

tmp0 = np.array([0]*5)
tmp1 = np.array([0]*5)

np.array_equal(tmp0, tmp1)

返回True

rjee0c15

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
bgibtngc

bgibtngc5#

numpy方法是必要的吗?如果所有元素都等于一个数字,那么所有元素都是相同的。你可以做下面的事情,这就利用了短路。

numbers[0] == 0 and len(set(numbers)) == 1

这种方式比使用np.all()更快

相关问题