我想形成一段代码,如果在数组中检测到非零数字,则会给出print语句。我的尝试如下:
if numpy.where(array != 0):
print "NonZero element detected!"
elif numpy.where(array ==0):
print "All elements are zero"
我也知道numpy.nonzero命令,但我真的很想得到这个,如果其他样式的打印语句工作,我不知道如何正确地合并python逻辑。我对使逻辑工作更感兴趣而不是找到零。我有什么似乎产生了“检测到NonZero元素!”无论数组中是否存在非零,都会声明。有任何想法如何实现这一点?
答案 0 :(得分:2)
您可以使用内置的any
:
如果iterable的任何元素为true,则返回True。如果iterable为空,则返回False。
if any(elt != 0 for elt in array):
print("Non zero detected")
else:
print("All elements are zero")
作为奖励,如果评估为False
布尔方式的唯一元素是0
,则可以执行以下操作:
if any(array):
print("Non zero detected")
else:
print("All elements are zero")
答案 1 :(得分:1)
您可以使用条件创建蒙版:
mask = array == 0
print(mask)
array([ True, False, False, True], dtype=bool)
根据您的使用情况,您可以使用.all
或.any
电话进行链接。如果你想检查所有元素是否为零,你可以这样做:
if (array == 0).all():
print('All elements are 0!')
或者,
if (array != 0).any():
print('Non-zero elements detected!')
等等。
只要提供两个额外的参数,您就可以使用np.mask
执行相同的操作:
mask = np.where(array == 0, True, False)
print(mask)
array([ True, False, False, True], dtype=bool)
答案 2 :(得分:1)
如果你纯粹是为了检测数组中的非零元素,为什么不做这样的事情......或者我错过了什么?
arr_1 = (1,2,4,6,7,88,9)
arr_2 = (1,2,4,6,0,7,88,9)
print if 0 in arr_1 'Non zero detected' else 'There is no zero in array'