Как эффективно удалить все индексы с определенным значением в одном списке из обоих списков? - PullRequest
0 голосов
/ 17 июня 2019

У меня есть два пустых массива, из которых я пытаюсь удалить все индексы со значением -1 во втором массиве.

Пример:

goldLabels = np.array([12, 2, 0, 0, 0, 1, 5])
predictions = np.array([12, 3, 0, 2, -1, -1, -1])

Ожидаемый результат:

>>> print(goldLabels)
[12, 2, 0, 0]  
>>> print(predictions) 
[12, 3, 0, 2]

Это мой код:

idcs = []
for idx, label in enumerate(goldLabels):
    if label == -1: 
        idcs.append(idx)
goldLabels = np.delete(goldLabels, idcs)
predictions = np.delete(predictions, idcs)

Есть ли способ сделать это более эффективно?

1 Ответ

0 голосов
/ 19 июля 2019

Вы можете использовать возможности numpy для непосредственного извлечения этих чисел с помощью маски:

goldLabels = np.array([12, 2, 0, 0, 0, 1, 5])
predictions = np.array([12, 3, 0, 2, -1, -1, -1])

mask = predictions!=-1 
predictions = predictions[mask]
goldLabels = goldLabels[mask]

print(goldLabels)
print(predictions) 

Выход:

[12  2  0  0]
[12  3  0  2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...