任何1D阵列都不能正常工作

2024-04-19 06:01:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的numpy2d数组。例如:

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的值。 我原以为第一封信是假的,第二封信是真的


Tags: 代码inforlenifnpany切片
1条回答
网友
1楼 · 发布于 2024-04-19 06:01:31

any(l)获取一个值列表(或iterable),如果它所迭代的任何值是真的,则返回True,即bool(value)==True。因此,将任何(…)的输出与数字进行比较是没有意义的,这样我就不会执行any(M[i,1:])>=2。你知道吗

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

相关问题 更多 >