5 votes

Existe-t-il une version inversée de numpy.all() ?

Comme indiqué dans le documents pour numpy.all() :

numpy.all() teste si tous les éléments du tableau le long d'un axe donné évaluent à True .

Existe-t-il une fonction qui fait le contraire ? Vérifier si tous les éléments du tableau le long d'un axe donné (j'ai besoin de la diagonale) donne la valeur False .

Ce dont j'ai besoin en particulier, c'est de vérifier si la diagonale d'une matrice à deux dimensions est zéro partout .

12voto

mathematical.coffee Points 23150

Tout d'abord, pour extraire la diagonale, vous pouvez utiliser mymatrix.diagonal() .

Il y a plusieurs façons de faire ce que vous voulez.

Pour tester si elle est nulle partout, on peut faire numpy.all(mymatrix.diagonal() == 0) .

Alternativement, "tout est égal à zéro (Faux)" est la même chose que "rien n'est égal à Vrai", donc vous pourriez aussi utiliser not numpy.any(mymatrix.diagonal()) .

Mais comme il s'agit d'une matrice numérique, il suffit d'additionner la valeur absolue des éléments de la diagonale et s'ils sont tous égaux à 0, chaque élément doit être nul : numpy.sum(numpy.abs(mymatrix.diagonal()))==0 .

1voto

user333700 Points 4749

La condition booléenne peut être n'importe quoi. donc soit

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

o

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

fonctionne, mais la deuxième version s'arrête au début de la vérification si un faux cas se présente. Dans les deux cas, il faut construire le tableau booléen complet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X