Numpy: векторизация сравнения двух логических массивов для получения начальных и конечных индексов интересующих областейPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Numpy: векторизация сравнения двух логических массивов для получения начальных и конечных индексов интересующих областей

Сообщение Anonymous »

Предполагая, что у меня есть 2 булевых массива одинакового размера, IS_OVERLAP и is_incoplete .
Я хотел бы получить начальные и конечные показатели (исключенные конечные индексы) интересующих регионов в этих Массивы (эти регионы представляют интерес для анализа, достигнутого на последующих этапах, исключенных запуска и конечных показателей, будет использоваться для нарезки 3 -го массива одинакового размера). < /p>
Регионы, этот набор условий должен быть выполнен. >,
[*] 2/A облака интереса может дальше распространяться на смежные строки (будь то false или true в is_overlap )
  • Если они являются смежными true < /code> строки в is_incoplete < /code>, < /li>
    Если общее число строки в расширенной области больше или равны max_n_rows
  • Расширенная область является единственной учетом смежных строк is_incoplete , а также смежные области (области объединен вместе) < /li>
    < /ul>
    < /li>
    < /ul>
    Пример < /p>

    Код: Выделить всё

    import numpy as np
    
    max_n_rows    = 4
    # row indices             0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
    is_overlap    = np.array([0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1], dtype=bool)
    is_incomplete = np.array([1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1], dtype=bool)
    
    Тогда ожидается результат:

    Код: Выделить всё

    # region indices                         0  1   2   3   4
    region_of_interest_starts    = np.array([1, 3,  9, 14, 16])
    region_of_interest_ends_excl = np.array([2, 8, 13, 15, 17])
    < /code>
    Объяснения: < /p>
    
      область 0: < /p>
    
     Условие 1/область содержит строку 1, потому что is_overlap [1] = true 
  • Условие 2/не достигается. Региона не распространяется на строку 0, даже если IS_INCOMPLETE [0] = true , потому что количество строк в этой области будет 2, что будет ниже, чем MAX_N_ROWS .
    < /ul>
    < /li>
  • область 1: < /p>

    Условие 1 /область содержит 4 и 5, потому что is_overlap [4] = is_overlap [5] = true
  • Условие 2/достигается. Область распространяется на смежные строки 3, 6 и 7, потому что is_incoplete [3] = is_incoplete [6] = is_incoplete [7] = true ), а общее количество строк в этой области тогда 5, что больше или равное, чем max_n_rows .
[*] область 2:
  • Условие 1/область 2 фактически сделано из 2 отдельных истинных в is_overlap на строках 9 и 11.
  • Условие 2/эти Однако 2 отдельные строки связаны смежным IS_INCOMPLETE [10] = true . Общее количество рядов этого региона составляет 4 (сделано строками 9, 10, 11, 12). Поскольку он больше или равен max_n_rows , достигается слияние. и 4: < /p>

    Начало аналогична области 2. 15, 16), который ниже, чем max_n_rows . Слияние с смежными строками в IS_INCOMPLETE затем не достигается. Только условие 1/применяется, в результате чего 2 отдельные области.


Подробнее здесь: https://stackoverflow.com/questions/793 ... and-end-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»