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
可以操作完毕。
我有一个简单的 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
可以操作完毕。