查找大型数组列表的特定索引



我有一个不同长度的大型数组的列表。我想找到每个大于 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]

最新更新