Есть ли инвертированная версия numpy.all ()? - PullRequest
3 голосов
/ 18 января 2012

Как указано в документах для numpy.all():

numpy.all() проверяет, все ли элементы массива вдоль заданной оси имеют значение True .

Существует ли функция, которая выполняет обратное действие: Проверьте, все ли элементы массива вдоль заданной оси (мне нужна диагональ) оценивается как False .

В частности, мне нужно проверить, равна ли диагональ 2-мерной матрицы нулю где .

Ответы [ 2 ]

11 голосов
/ 18 января 2012

Во-первых, чтобы извлечь диагональ, вы можете использовать mymatrix.diagonal().

Есть довольно много способов сделать то, что вы хотите.

Чтобы проверить, равен ли он нулю везде, вы можете сделать numpy.all(mymatrix.diagonal() == 0).

В качестве альтернативы, «все равно нулю (False)» то же самое, что и «ничто не равно Истине», поэтому вы также можете использовать not numpy.any(mymatrix.diagonal()).

Так как это числовая матрица, вы можете просто сложить абсолютное значение элементов на диагонали и, если они все равны 0, каждый элемент должен быть равен нулю: numpy.sum(numpy.abs(mymatrix.diagonal()))==0.

2 голосов
/ 18 января 2012

логическое условие может быть любым.так что либо

(np.diag(x) == 0).all()

или

(np.diag(x) != 0).any()

работает, но вторая версия останавливается рано при любой проверке, если есть ложный случай.В обоих случаях необходимо построить полный логический массив.

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