Domanda

Questo mi ha fatto grattare la testa per un po '. Stavo tagliando involontariamente un array con None e ottenendo qualcosa di diverso da un errore (mi aspettavo un errore). Al contrario, restituisce un array con una dimensione aggiuntiva.

>>> 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?

È stato utile?

Soluzione

L'uso di None equivale all'utilizzo di numpy.newaxis , quindi sì, è intenzionale. In realtà, sono la stessa cosa, ma, naturalmente, newaxis lo spiega meglio.

I documenti :

  

L'oggetto newaxis può essere utilizzato in tutte le operazioni di taglio per creare un asse di lunghezza uno. newaxis è un alias per & # 8216; None & # 8217 ;, e & # 8216; None & # 8217; può essere usato al posto di questo con lo stesso risultato.

Una domanda SO correlata .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top