En numpy, uno puede usar el objeto 'newaxis' en la sintaxis de corte para crear un eje de longitud uno, por ejemplo:
import numpy as np
print np.zeros((3,5))[:,np.newaxis,:].shape
# shape will be (3,1,5)
La documentación indica que también se puede usar en None
lugar de newaxis
, el efecto es exactamente el mismo.
¿Hay alguna razón para elegir uno sobre el otro? ¿Existe 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 que None
esté permitido?
None
es mejor es la optimización de la velocidad de ejecución, ya que puede proporcionar un beneficio de tiempo muy pequeño. Pero normalmente deberías preferirnp.newaxis
.newaxis = object()
(o el equivalente de nivel C) está más allá de mí ... usarNone
es bastante propenso a errores. Tenía una función con un error (una basereturn
que se suponía que devolvía una matriz booleana) y comencé a recibir errores debido a una falta de coincidencia de formas. Me tomó un tiempo darme cuenta de que indexar conNone
no solo genera unIndexError
. Si hubieran usado un valor centinela "nuevo", habría evitado 30 minutos de intentar dar sentido al error ...