如何在numpy中计算分数或第n个根方的粉末?

时间:2014-10-21 15:00:01

标签: python-2.7 numpy pow

我试图计算一个值的第8个平方或^ ^ / 8,但是numpy总是返回错误的值

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

我的输出始终为1.0。 我也试过了方形命令。 我需要使用numpy,我在mycode中使用其他numpy数组,只是为了保持兼容。

2 个答案:

答案 0 :(得分:5)

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

当然,任何0的幂都会产生1。

答案 1 :(得分:1)

了解数字塔。

规则1 :给定两个相同类型的操作数,结果将具有该类型。

e.g。 int / int = int

temp**(1/8)没有给出temp的第8个根,因为:

>>>1/8
0

规则2 :如果操作数混合,其中一个将被强制转换为数字塔:整数 - >理性的 - >浮动 - >复杂。

e.g。 float / int = float

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

注意:可能存在这些规则不适用于真正的分区/分区的情况//但我并不完全理解它们。请参阅link

“他们已经完成了你知道的研究。每次都有60%的时间都在工作。” - Brian Fantana

陷阱:在OPs问题中,表达式temp**(1/8)由混合操作数组成(temp是浮点数),那么为什么(1/8)不是浮点数?

根据BODMAS / BIDMAS评估操作数,因此首先评估(1/8),结果表达式变为temp**0,此时0被强制转换为浮点数。

权力int的任何正float0.01.0