2009-06-03 16 views
73

En una numpy puede utilizar el objeto 'newaxis' en la sintaxis de corte para crear un eje de una longitud de, por ejemplo:Numpy: ¿Debo usar newaxis o None?

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

El documentation states que también se puede utilizar None en lugar de newaxis, el efecto es exactamente el mismo.

¿Hay alguna razón para elegir una sobre la otra? ¿Hay alguna preferencia general o guía de estilo? Mi impresión es que newaxis es más popular, probablemente porque es más explícito. Entonces, ¿hay alguna razón por la cual None está permitido?

Respuesta

84

None está permitido porque numpy.newaxis es simplemente un alias de None.

In [1]: import numpy 

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

Los autores eligieron probablemente porque necesitaban una constante conveniente, y None estaba disponible.

cuanto a por qué se debe preferir newaxis sobre None: principalmente se debe a que es más explícito, y en parte porque algún día los autores numpy podría cambiarlo a algo distinto de None. (No están planeando, y probablemente no lo harán, pero no hay una buena razón para preferir None.)

+0

Gracias, no me había dado cuenta de que np.newaxis es en realidad Ninguno. Iré con newaxis entonces. – nikow

+4

De hecho, dicen que puede usar None, por lo que no pueden cambiarlo ahora: "El objeto newaxis se puede usar en la sintaxis de división básica descrita anteriormente. No se puede usar ninguno en lugar del newaxis". – endolith

+2

Ninguna es más corta :) – David