Python numpy 数组:检查数组中的所有元素是否为 0 或 2,则为 true



如何在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 的内容,您可以立即直观地知道。只是一个提示。

最新更新