any 不适用于一维数组

any does not work properly with 1D array

我有一个简单的 numpy 二维数组。例如。 :

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')

问题 我现在的问题是 any 不关心我的切片 (M[i,1:])。它总是检查整个数组,当然会找到一个大于 2 的值。 我希望在第一次迭代中出现 FALSE,在第二次迭代中出现 TRUE

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

但是,您可以执行 any(M[i, 1:] > 2),其中 M[i, 1:] > 2 将大于运算符广播到给定行的每个值,并且 returns 您是一个布尔数组,any 可以操作完毕。