2009-09-10 20 views
21

Esto me hizo rascar la cabeza por un tiempo. Inintencionalmente estaba cortando una matriz con None y obteniendo algo más que un error (esperaba un error). En cambio, devuelve una matriz con una dimensión extra.Rebanada de matriz NumPy usando Ninguno

>>> import numpy 
>>> a = numpy.arange(4).reshape(2,2) 
>>> a 
array([[0, 1], 
     [2, 3]]) 
>>> a[None] 
array([[[0, 1], 
     [2, 3]]]) 

¿Este comportamiento es intencional o tiene un efecto secundario? Si es intencional, ¿hay alguna razón para ello?

Respuesta

28

El uso de None es equivalente al uso de numpy.newaxis, entonces sí, es intencional. De hecho, son la misma cosa, pero, por supuesto, newaxis lo explica mejor.

The docs

A related SO question.