2014-04-09 13 views

risposta

70

Oh, è molto "peggiore" di quello:

In [2]: numpy.power(10,-1) 
Out[2]: 0 

Ma questo è un suggerimento per quello che sta succedendo: 10 è un intero, e numpy.power non costringe i numeri per carri. Ma questo funziona:

In [3]: numpy.power(10.,-1) 
Out[3]: 0.10000000000000001 

In [4]: numpy.power(10.,-100) 
Out[4]: 1e-100 

Si noti, tuttavia, che l'operatore di potenza, **, non convertito a stare a galla: (. Solo una nota in calce alle altre due risposte in questa pagina)

In [5]: 10**-1 
Out[5]: 0.1 
+0

Questo è qualcosa che dovrebbe sicuramente venire con un auto-warning con il modulo numpy – mjp

35

Il metodo di numpy presuppone che si desideri il numero intero restituito poiché è stato fornito un numero intero.

np.power(10.0,-100) 

funziona come ci si aspetterebbe.

2

dato ingresso due valori di ingresso, è possibile controllare il tipo di dati dell'oggetto che np.power tornerà controllando l'attributo types:

tipi interi Python compatibili-
>>> np.power.types 
['bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l', 'LL->L', 'qq->q', 
'QQ->Q', 'ee->e', 'ff->f', 'dd->d', 'gg->g', 'FF->F', 'DD->D', 'GG->G', 'OO->O'] 

sono indicati con l, compatibile compatibile Python galleggia da d (documents).

np.power decide in modo efficace cosa restituire controllando i tipi degli argomenti passati e utilizzando la prima firma corrispondente da questo elenco.

Quindi, dato 10 e -100, np.power corrisponde alla firma integer integer -> integer e restituisce il numero intero 0.

D'altra parte, se uno degli argomenti è float, viene utilizzato the integer argument will also be cast to a float e viene utilizzata la firma float float -> float (e viene restituito il valore float corretto).

Problemi correlati