У меня массивный набор данных 4D, распределенный по 4 переменным, x_list
, y_list
, z_list
и i_list
. Каждый из них представляет собой список N скаляров с X, Y и Z, представляющими положение точки в пространстве, и я представляю интенсивность.Самый эффективный способ удаления записей в списке
У меня уже есть функция, которая выбирает и отмечает незначительные точки (те, чья интенсивность слишком низкая) для удаления, путем установки их интенсивности на 0. Однако, когда я запускаю это на своем 2-миллионном наборе точек, удаление процесс занимает несколько часов.
В настоящее время я использую команду .pop (index) для удаления точек данных, потому что это делает это очень чисто. Вот код:
counter = 0
i = 0
for entry in i_list
if (i_list[i] == 0):
x_list.pop(i)
y_list.pop(i)
z_list.pop(i)
i_list.pop(i)
counter += 1
print (counter, "points removed")
else
i += 1
Как я могу сделать это более эффективно?
Прежде всего, как вы перебираете списки? – NightShadeQueen
Вторая вещь вторая. Не используйте 'print', пока цикл через 2 миллиона точек установлен. , что 80% этого времени потребляется при печати. И поп - не лучшее решение. Почему бы не '.remove()' или просто 'del x_list [i]'? – Laszlowaty
Возможно, вам стоит подумать о NumPy. обработка больших двухмерных матриц, что и есть то, что вы действительно h пр. –