Выберите строки матрицы, используя двоичный массив - PullRequest
2 голосов
/ 11 марта 2020

Предположим, что у меня есть матрица с форматом (mxn) и один массив с измерением (m), содержащий логические значения. Я хотел бы выбрать и извлечь только те строки моей матрицы, в которых соответствующий индекс массива m-измерения содержит истинное значение. Должен быть действительно простой способ решения этой проблемы, о котором я не знаю.

Минимальный воспроизводимый способный пример, который может помочь лучше объяснить:

A = np.array([[ 1,  4,  5, 12],
              [-5,  8,  9,  0],
              [-6,  7, 11, 19],
              [13, 15, 16, 19]])

B = np.array([1,0,1,1])

Ожидаемый результат:

Out[1]: 
array([[ 1,  4,  5, 12],
       [-6,  7, 11, 19],
       [13, 15, 16, 19]])

1 Ответ

2 голосов
/ 11 марта 2020

Приведите B к значению bool, поэтому индексация основана на логических значениях:

A[B.astype(bool)]

array([[ 1,  4,  5, 12],
       [-6,  7, 11, 19],
       [13, 15, 16, 19]])

В противном случае, будучи B массивом целых чисел, вы будете выполнять целочисленную индексацию и будете просто делайте индексацию по строкам, указанным индексами:

A[B]

array([[-5,  8,  9,  0],
       [ 1,  4,  5, 12],
       [-5,  8,  9,  0],
       [-5,  8,  9,  0]])

Узнайте больше о булевой индексации здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...