我试图计算一个值的第8个平方或^ ^ / 8,但是numpy总是返回错误的值
temp = 141.18
h2 = temp ** (1/8)
h2_ = np.power(temp, (1/8))
我的输出始终为1.0。 我也试过了方形命令。 我需要使用numpy,我在mycode中使用其他numpy数组,只是为了保持兼容。
答案 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
的任何正float
或0.0
为1.0
。