#python #numpy-slicing
Вопрос:
У меня есть список индексов и список данных. В списке индексов указано, какие элементы следует удалить из списка данных. Я хотел бы эффективно использовать список индексов, т. е. без циклов. Есть ли более быстрый способ удалить эти элементы?
Комментарии:
1. Какое это имеет отношение к numpy?
2. Все списки имеют индексы. Что вы подразумеваете под «списком индексов»?
3. Я не думаю, что есть способ сделать это без циклов. Отсортируйте список индексов от самого высокого до самого низкого. Пройдитесь по ним, обращаясь
list_of_data.pop(index)
к каждому.4. @BenAlan Он имеет в виду список, содержащий индексы в списке данных.
5. Согласно ответу @Barmar’а, или
a = [x for i,x in enumerate(a) if i not in indices]
, предполагаяa
, что это ваш список данных иindices
ваш список индексов.
Ответ №1:
Предполагая, что вы используете numpy, np.delete
делает именно то, что вы хотите:
>>> a = np.array([1, 4, 9, 16, 25, 36])
>>> np.delete(a, [1, 2, 5])
array([ 1, 16, 25])