我有一个不同长度的大型数组的列表。我想找到每个大于 420 的数组的位置。例如,[size=(134,7),size=(620,7),size=(800,7),......]
我的代码如下
for x in x_train:
if len(x)>420:
print(x_train.index(x))
我收到此错误:
DeprecationWarning: elementwise == comparison failed; this will raise an
error in the future.
正确的解决方案是什么?
这是一个警告,表明某些内容已被弃用,但不是错误。我非常怀疑您的代码块产生了此警告,并且可能是某些导入的库或其他代码是原因。
无论如何,关于您的代码,它的效率非常低,因为一旦您找到x
,您就会在列表中再次寻找它。改用enumerate
获取索引:
for i, x in enumerate(x_train):
if len(x) > 420:
print(i)
使用列表推导,您可以存储所有索引:
indexes = [i for i, x in enumerate(x_train) if len(x) > 420]
让我们使用列表理解来解决它。
#Create a sample list of arrays of arbitrary length.
myList = [np.full((134,7), 10), np.full((620,7),0), np.full((800,7),0), np.full((150,7),0), np.full((500,7),0)]
indexes_gt_420 = [i for i in range(len(myList)) if len(myList[i]) > 420]
indexes_gt_420
[1, 2, 4]