Повышение производительности операций над массивом NumPy

Я использую numpy.delete для удаления элементов из массива, который находится внутри цикла while. Этот цикл while действителен, только если массив не пуст. Этот код работает нормально, но тормозит значительно, когда массив имеет более 1e6 элементов. Вот пример:

while(array.shape[0] > 0):
     ix = where((array >= x) & (array <= y))[0]
     array = delete(array,ix,None)

Я пытался сделать этот код эффективным, но не нашел хорошего способа ускорить цикл while. Я думаю, что узким местом здесь является удаление, которое должно включать в себя какую-то копию. Я пытался использовать замаскированный массив, чтобы избежать копирования, но я не так хорош в python, а замаскированный массив не так легко искать. Есть ли хороший и быстрый способ использовать удаление или замену, чтобы элементы 7e6 могли обрабатываться циклом выше, не занимая 24 часа?

Спасибо

9
задан mgilson 15 May 2012 в 11:24
поделиться