Dans un tableau numéroté, je souhaite remplacer tous les nan
et inf
par un nombre fixe. Puis-je faire cela en une seule étape pour gagner du temps de calcul (les tableaux sont vraiment gros)?python: masquage combiné en numpy
a = np.arange(10.0)
a[3] = np.nan
a[5] = np.inf
a[7] = -np.inf
# a: [ 0. 1. 2. nan 4. inf 6. -inf 8. 9.]
a[np.isnan(a)] = -999
a[np.isinf(a)] = -999
# a: [ 0. 1. 2. -999. 4. -999. 6. -999. 8. 9.]
Le code ci-dessus fonctionne correctement. Mais je cherche quelque chose comme:
a[np.isnan(a) or np.isinf(a)] = -999
Ce qui ne fonctionne pas et je peux voir pourquoi. Juste en pensant qu'il pourrait être mieux si chaque élément d'un est seulement vérifié une fois.
Magnifique! Quelle est la différence entre "ou" et "|"? Peut-être la logique bit à bit? En passant, je viens de le tester: la version combinée est grossièrement 10% plus rapide. Edit: Ok, je vois. Merci! – offeltoffel