我有一个简单的numpy 2D数组。例如。 :
M=np.array([[15,1,0],
[19,5,2]])
我循环检查是否在每一行(轴1) 值大于例如2。 由于第一个值总是大于2,因此我将数组切片以仅检查该行中其他n个值中的哪个大于2。
#A
for i in range(len(M)):
if any(M[i,1:])>=2:
disp('Super')
或者,因为我还不熟悉python,我也使用了这个代码,它的功能应该相同,对吗?
#B
for i in range(len(M)):
if any(x>=2 in x in M[i,1:]):
disp('Great')
问题我现在有的是任何不关心我的切片(M [i,1:])。它总是检查总数组,当然还要查找大于2的值。 我预计在第一次尝试中为FALSE,在第二次尝试中为TRUE
答案 0 :(得分:1)
any(l)获取值的列表(或可迭代),并且如果迭代的任何值都是真实的,则返回True,即bool(value)== True。因此,将任何(...)的输出与数字进行比较是没有意义的,所以我不会any(M[i,1:])>=2
。
但是,您可以执行any(M[i, 1:] > 2)
M[i, 1:] > 2
向给定行的每个值广播大于运算符,并返回any
可以操作的布尔数组。