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)
La documentation indique que l'on peut également utiliser à la None
place 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? J'ai l'impression que newaxis
c'est plus populaire, probablement parce que c'est plus explicite. Alors, y a-t-il une raison pour laquelle None
est autorisé?
None
optimisation de la vitesse d’exécution est l’un des meilleurs endroits , ce qui peut donner un très petit gain de temps. Mais généralement, vous devriez préférernp.newaxis
.newaxis = object()
(ou l'équivalent de niveau C) me dépasse ... l'utilisationNone
est assez sujette aux erreurs. J'avais une fonction avec un bug (un barereturn
qui était censé renvoyer un tableau booléen) et j'ai commencé à avoir des erreurs en raison d'une incompatibilité de forme. Il m'a fallu un certain temps pour réaliser que l'indexation avecNone
ne soulève pas simplement unIndexError
. S'ils avaient utilisé une valeur sentinelle «fraîche», j'aurais évité 30 minutes d'essayer de comprendre l'erreur ...