Em numpy, pode-se usar o objeto 'newaxis' na sintaxe de fatiamento para criar um eixo de comprimento um, por exemplo:
import numpy as np
print np.zeros((3,5))[:,np.newaxis,:].shape
# shape will be (3,1,5)
A documentação afirma que também se pode usar em None
vez de newaxis
, o efeito é exatamente o mesmo.
Existe alguma razão para escolher um em vez do outro? Existe alguma preferência geral ou guia de estilo? Minha impressão é que newaxis
é mais popular, provavelmente porque é mais explícito. Então, há alguma razão para que None
seja permitido?
None
é melhor é a otimização da velocidade de execução, ela pode fornecer um benefício de tempo muito pequeno. Mas normalmente você deve preferirnp.newaxis
.newaxis = object()
(ou o equivalente de nível C) está além da minha compreensão ... usarNone
é bastante sujeito a erros. Eu tinha uma função com um bug (um barereturn
que deveria retornar um array booleano) e comecei a receber erros devido à incompatibilidade de forma. Levei um tempo para perceber que a indexação comNone
não simplesmente levanta umIndexError
. Se eles tivessem usado um valor de sentinela "fresco", eu evitei 30 minutos tentando entender o erro ...