фильтрация элементов матрицы по строкам в python scipy / numpy - PullRequest
1 голос
/ 30 марта 2011

Как я могу отфильтровать элементы матрицы NxM в scipy/numpy в Python по некоторым условиям в строках?

Например, просто вы можете сделать, где (my_matrix != 3), который обрабатывает матрицу "поэлементно", я хочу сделать это по строкам, чтобы вы могли спросить такие вещи, как, где (my_matrix != some_other_row), чтобыотфильтровать все строки, которые не равны some_other_row.Как это можно сделать?

1 Ответ

3 голосов
/ 30 марта 2011

Предположим, у вас есть матрица

a = numpy.array([[0, 1, 2],
                 [3, 4, 5],
                 [0, 1, 2]])

, и вы хотите получить индексы строк, которые не равны

row = numpy.array([0, 1, 2])

Вы можете получить эти индексы с помощью

indices, = (a != row).any(1).nonzero()

a != row сравнивает каждую строку от a до row поэлементно, возвращая логический массив той же формы, что и a.Затем мы используем any() вдоль первой оси, чтобы найти строки, в которых любой элемент отличается от соответствующего элемента в row.Наконец, nonzero() дает нам индексы этих строк.

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