2014-10-21 12 views
5

sto cercando di calcolare la radice quadrata di un valore 8 o il suo^1/8, ma NumPy è sempre tornando al valore erratocome posso calcolare il pow di frazioni o il nth root square in numpy?

temp = 141.18 
h2 = temp ** (1/8) 
h2_ = np.power(temp, (1/8)) 

la mia uscita è sempre 1.0. Ho provato anche il comando quadrato. Ho bisogno di usare numpy, sto usando altri array numpy in mycode, solo per mantenere la compatibilità.

+2

forse puoi provare con '1./8.'? !! – Dalek

risposta

4
>>> 1/8 
0 
>>> 1./8 
0.125 

E, naturalmente, qualsiasi cosa per la potenza di 0 risultati in 1.

0

Comprendere la torre numerica.

Regola 1: dati due operandi dello stesso tipo, il risultato avrà quel tipo.

ad es. int/int = int

temp**(1/8) non dà all'8 radice di temperatura perché:

>>>1/8 
0 

Regola 2: Se gli operandi sono mescolati, uno di essi sarà costretto la torre numerico: integer -> rational -> float -> complex.

ad es. float/int = galleggiare

>>>1./8 # 1. is a float 
0.125 

Nota: Ci possono essere casi in cui queste regole non si applicano alla vera divisione divisione/e pavimento // ma io non li comprendere appieno. Vedi lo link.

"Hanno fatto studi che conosci, funzionano il 60% delle volte ... ogni volta." - Brian Fantana

trappola: Nei PO discussione l'espressione temp**(1/8) è fatta di operandi misti (temp è un galleggiante) perché non è (1/8) un galleggiante?

Gli operandi vengono valutati secondo BODMAS/BIDMAS così (1/8) viene valutata per prima, l'espressione risultante diventa temp**0 ea questo punto 0 è costretto ad un galleggiante.

Qualsiasi positivo int o float alla potenza 0.0 è 1.0.

Problemi correlati