web-dev-qa-db-fra.com

Numpy: Dois-je utiliser newaxis ou None?

Dans numpy, on peut utiliser l'objet 'newaxis' dans la syntaxe de découpage pour créer un axe de longueur un, par exemple:

import numpy as np
print np.zeros((3,5))[:,np.newaxis,:].shape
# shape will be (3,1,5)

Le la documentation indique que l'on peut également utiliser None au lieu de newaxis, l'effet est exactement le même.

Y a-t-il une raison de choisir l'un plutôt que l'autre? Existe-t-il une préférence générale ou un guide de style? Mon impression est que newaxis est plus populaire, probablement parce qu'il est plus explicite. Y a-t-il une raison pour laquelle None est autorisé?

80
nikow

None est autorisé car numpy.newaxis est simplement un alias pour None.

In [1]: import numpy

In [2]: numpy.newaxis is None
Out[2]: True

Les auteurs l'ont probablement choisi car ils avaient besoin d'une constante pratique et None était disponible.

Quant à savoir pourquoi vous devriez préférer newaxis à None: c'est principalement parce qu'il est plus explicite, et en partie parce qu'un jour les auteurs de numpy pourraient le changer en autre chose que None. (Ils n'ont pas l'intention de le faire et ne le feront probablement pas, mais il n'y a aucune bonne raison de préférer None.)

92
AFoglia