如何在Python Numpy中检查数组中的所有元素是0还是2?例如
if (all elements in c == 0) or (all elements in c == 2):
This is true
else :
This is False
这意味着如果c = numpy.array[0,0,2]
它是true
,
但如果c=numpy.array[0,1,2]
它是false
.
谁能给我一段代码?
numpy.isin
就是为此而设计的:
import numpy as np
arr1 = np.array([0, 0, 2])
arr2 = np.array([0, 1, 2])
np.isin(arr1, [0, 2]).all()
# True
np.isin(arr2, [0, 2]).all()
# False
当然,无论 ndim 如何,这都有效:
arr3 = np.random.randint(0, 3, (100, 100))
arr4 = np.random.choice([0,2], (100, 100))
np.isin(arr3, [0, 2]).all()
# False
np.isin(arr4, [0, 2]).all()
# True
简单的方法:只需计算 0 和 2 的数量,检查它的计数是否等于数组的长度:
def check(array):
return array.count(0) + array.count(2) == len(array)
您可以使用二进制运算符作为逻辑运算符:
((x == 0) | (x == 2)).all()
这比"np.isin"解决方案略快(~20-30%(。
快速视觉测试正在进行
np.unique(arr1)
这将列出 arr1 中的所有唯一元素。因此,如果您得到任何不包含 0 或 2 的内容,您可以立即直观地知道。只是一个提示。