2013-05-07 16 views
7

Perché ciò accade?numpy.all con argomenti interi restituisce un numero intero

>>> map(numpy.all, range(-2, 3)) 
[-2, -1, 0, 1, 2] 

È intenzionale o è il numero intero che cade in una fessura?

Ha a che fare con:

>>> map(numpy.all, [False, True]) 
[False, True] 

Io corro Numpy 1.8.0.dev-74b08b3 e Python 2.7.3

+4

Ottengo '[True, True, False, True, True]', su Python 2.7.3, NumPy 1.6.1. Quali versioni di Python e NumPy stai usando? –

+5

Posso riprodurre l'uscita dell'OP in 1.7.1. – DSM

+1

Cosa ti aspetti 'np.all (-2)' per tornare? –

risposta

1

Utilizzando map(numpy.all, range(-2,3)) è in realtà la creazione di un elenco con:

[numpy.all(-2), numpy.all(-1), numpy.all(0), numpy.all(1), numpy.all(2)] 

dando

[-2, -1, 0, 1, 2] 

Se avete fatto map(lambda x: numpy.all([x]), range(-2,3)), sarebbe fare:

[numpy.all([-2]), numpy.all([-1]), numpy.all([0]), numpy.all([1]), numpy.all([2])] 

dando

[True, True, False, True, True] 

Come inviato da @ Mark Dickinson, v'è un problema noto con numpy.all in cui si restituisce il valore di ingresso al posto di True oppure False per alcuni input. Nel secondo esempio, map(numpy.all, [False, True]) fa esattamente come prima, restituendo il valore di input.

Problemi correlati