任何与1D阵列无法正常工作

时间:2017-10-29 22:50:50

标签: python arrays numpy any

我有一个简单的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

1 个答案:

答案 0 :(得分:1)

any(l)获取值的列表(或可迭代),并且如果迭代的任何值都是真实的,则返回True,即bool(value)== True。因此,将任何(...)的输出与数字进行比较是没有意义的,所以我不会any(M[i,1:])>=2

但是,您可以执行any(M[i, 1:] > 2) M[i, 1:] > 2向给定行的每个值广播大于运算符,并返回any可以操作的布尔数组。