Нахождение определенного индекса списка большого массива - PullRequest
0 голосов
/ 10 января 2019

У меня есть список большого массива различной длины. Я хочу найти положение каждого массива больше 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.

Какое будет правильное решение?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Давайте воспользуемся списком, чтобы решить его.

#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]
0 голосов
/ 10 января 2019

Это предупреждение о том, что что-то устарело, но это не ошибка. Я очень сомневаюсь, что ваш блок кода выдал это предупреждение, и скорее всего, причиной была некая импортированная библиотека или другой код.

В любом случае, в отношении вашего кода он крайне неэффективен, так как, как только вы найдете 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...