Лучшая практика для расширения списка (эффективности) в Python

Лука

Я работаю с большими наборами данных. Я пытаюсь использовать библиотеку NumPy, где я могу, или функции python для эффективной обработки наборов данных (например, LC).

Сначала нахожу соответствующие индексы:

dt_temp_idx = np.where(dt_diff > dt_temp_th)

Затем я хочу создать маску, содержащую для каждого индекса последовательность, начиная от индекса до конечного значения, я попробовал:

mask_dt_temp = [np.arange(idx, idx+dt_temp_step) for idx in dt_temp_idx]

и:

  mask_dt_temp = [idxs for idx in dt_temp_idx for idxs in np.arange(idx, idx+dt_temp_step)]

но это дает мне исключение:

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Пример ввода:

indexes = [0, 100, 1000]

Пример вывода со стоповыми значениями после 10 целых чисел из каждого индекса:

list = [0, 1, ..., 10, 100, 101, ..., 110, 1000, 1001, ..., 1010]

1) Как я могу это решить? 2) Это лучшая практика?

Дивакар

Использование масок (логических массивов) эффективно, так как эффективно с точки зрения памяти и производительности. Мы будем использовать SciPy's binary-dilationдля расширения пороговой маски.

Вот пошаговая настройка и запуск решения:

In [42]: # Random data setup
    ...: np.random.seed(0)
    ...: dt_diff = np.random.rand(20)
    ...: dt_temp_th = 0.9

In [43]: # Get mask of threshold crossings
    ...: mask = dt_diff > dt_temp_th

In [44]: mask
Out[44]: 
array([False, False, False, False, False, False, False, False,  True,
       False, False, False, False,  True, False, False, False, False,
       False, False])

In [45]: W = 3 # window size for extension (edit it according to your use-case)

In [46]: from scipy.ndimage.morphology import binary_dilation

In [47]: extm = binary_dilation(mask, np.ones(W, dtype=bool), origin=-(W//2))

In [48]: mask
Out[48]: 
array([False, False, False, False, False, False, False, False,  True,
       False, False, False, False,  True, False, False, False, False,
       False, False])

In [49]: extm
Out[49]: 
array([False, False, False, False, False, False, False, False,  True,
        True,  True, False, False,  True,  True,  True, False, False,
       False, False])

Сравните maskс, extmчтобы увидеть, как происходит расширение.

Как мы видим, пороговое значение maskрасширяется на размер окна Wс правой стороны, как и ожидаемая маска вывода extm. Это можно использовать для маскировки dt_diff[~extm]элементов во входном массиве: для имитации удаления / отбрасывания элементов из следующих входных данных boolean-indexingили, наоборот, dt_diff[extm]для имитации их выбора.

Альтернативы с функциями на основе NumPy

Альтернатива # 1

extm = np.convolve(mask, np.ones(W, dtype=int))[:len(dt_diff)]>0

Альтернатива # 2

idx = np.flatnonzero(mask)
ext_idx = (idx[:,None]+ np.arange(W)).ravel()

ext_mask = np.ones(len(dt_diff), dtype=bool)
ext_mask[ext_idx[ext_idx<len(dt_diff)]] = False
 
# Get filtered o/p
out = dt_diff[ext_mask]

Эта статья взята из Интернета, укажите источник при перепечатке.

Если есть какие-либо нарушения, пожалуйста, свяжитесь с[email protected] Удалить.

Отредактировано в
0

я говорю два предложения

0обзор
Войти в системуУчаствуйте в комментариях

Статьи по теме

Случайный лес на панельных данных с использованием Python

фигура Python, свойства которой принадлежат дочернему классу

Python находит максимальное количество строк времени

выбрать переменную через ввод (python)

Python заменяет слова, разделенные запятыми, в списке на значение словаря, если оно существует в ключе словаря

получение размера примитивных типов данных в Python

python: заменить элементы в списке условными

Могу ли я гарантировать, что метод базового класса python всегда вызывается

python сортировка отрицательных и / или десятичных буквенно-цифровых строк

вырезание диаграммы Вороного в Python

аннотации функций в Python

Итератор python: почему это работает?

Можно ли сопоставить словарь с операциями с объектами в Python

Python Как инициализировать объект чтения в определении класса

Подушка Python неправильно генерирует изображение

Python: сортировка словаря списков

как запустить файл Python в другом каталоге

Python - отправка электронной почты с проблемой кодировки (апостроф)

Список строк разделения Python с использованием условного оператора for

Использование функции применения Python для добавления столбцов в фрейм данных?

Запуск процесса от имени другого пользователя из Python * и * печати кода завершения

Пропустить значение в функции диапазона в Python

Как установить пакет разработчика Python?

Удаление управляющих символов из строки в Python

Как создать индекс в замыкании вокруг функции синтаксического анализа в Python

Построить строку данных против целочисленного Python

Собирает ли Python мусор переменные, на которые больше не ссылаются, пока они находятся в области видимости функции?

Python: почему переменная может существовать сама по себе?

Python: выберите ключ, значения из словаря, соответствующие данному списку

TOP список

  1. 1

    Распределение Рэлея Curve_fit на Python

  2. 2

    TypeError: store.getState não é uma função. (Em 'store.getState ()', 'store.getState' é indefinido, como posso resolver esse problema?

  3. 3

    В типе Observable <unknown> отсутствуют следующие свойства из типа Promise <any>.

  4. 4

    Как добавить Swagger в веб-API с поддержкой OData, работающий на ASP.NET Core 3.1

  5. 5

    How to click an array of links in puppeteer?

  6. 6

    Merging legends in plotly subplot

  7. 7

    ViewPager2 мигает / перезагружается при смахивании

  8. 8

    Отчеты Fabric Debug Craslytic: регистрация, отсутствует идентификатор сборки, применить плагин: io.fabric

  9. 9

    How to normalize different curves drawn with geom = "step" when using stat_summary

  10. 10

    无法通过Vue在传单中加载pixiOverlay

  11. 11

    как я могу удалить vue cli 2?

  12. 12

    Как я могу нарисовать заполненный прямоугольник в JFreeChart?

  13. 13

    SQL Вычтите две строки друг от друга в одном столбце, чтобы получить результат

  14. 14

    Elasticsearch - Нечеткий поиск не дает предложения

  15. 15

    Single legend for Plotly subplot for line plots created from two data frames in R

  16. 16

    Описание моего типа Parser как серии преобразователей монад

  17. 17

    Как изменить цвета запятых и скобок в VS Code

  18. 18

    Сброс значения <input type = "time"> в Firefox

  19. 19

    Почему прокси в vue.config.js 404

  20. 20

    Как установить параметр -noverify с gradle ktx для робоэлектрических тестов Android?

  21. 21

    В чем разница между ifstream, ofstream и fstream?

популярныйтег

файл