2009-09-10 23 views
21

Questo mi ha graffiato la testa per un po '. Stavo inconsapevolmente tagliando un array con None e ottenendo qualcosa di diverso da un errore (mi aspettavo un errore). Invece, restituisce un array con una dimensione extra.NumPy array slice using None

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

È questo comportamento intenzionale o un effetto collaterale? Se intenzionale, c'è qualche logica per questo?

risposta

28

L'utilizzo di Nessuno è equivalente all'utilizzo di numpy.newaxis, quindi sì, è intenzionale. In realtà, sono la stessa cosa, ma, ovviamente, lo newaxis lo spiega meglio.

The docs

A related SO question.