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

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

Сообщение 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)
    < /code>
    Результат ожидается, тогда < /p>
    # 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])
    
    Пояснения:

    регион 0:

    Условие 1/ Регион содержит строку 1, поскольку is_overlap[1] = True
  • условие 2/ не достигнуто. Область не распространяется на строку 0, даже если is_incomplete[0] = True, поскольку количество строк в этой области тогда будет равно 2, что меньше, чем max_n_rows.
[*]регион 1:
  • условие 1/ регион содержит 4 и 5, потому что is_overlap[4] = is_overlap[5] = True
  • условие 2/ достигнуто. Область распространяется на смежные строки 3, 6 и 7, поскольку is_incomplete[3] = is_incomplete[6] = is_incomplete[7] = True), а общее количество строк в этой области тогда равно 5, что больше или равно max_n_rows.
[*]регион 2:
  • условие 1/ регион 2 на самом деле состоит из двух отдельных True в is_overlap в строках 9 и 11.
  • условие 2/ эти два отдельных однако строки связаны смежным элементом is_incomplete[10] = True. Общее количество строк этой области тогда равно 4 (составленным строками 9, 10, 11, 12). Поскольку оно больше или равно max_n_rows, происходит слияние.
[*]regions 3 и 4:
  • start аналогичен региону 2. Однако, следуя той же логике, общее количество строк тогда будет равно 3 (составленным строками 14, 15, 16), что ниже, чем max_n_rows. В этом случае слияние с смежными строками в is_incomplete не будет достигнуто. Применяется только условие 1/, в результате чего образуются две отдельные области.


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

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

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

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

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

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

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