我想计算一些大数的几何图形。问题是大数乘积的结果是溢出。示例:
a = array([168116745,168117411,168117729,168118170,168118695,168119286,168119610])
print(a.prod())
print(a.prod()**(1.0/len(a)))输出
1947451320
21.235703778668626另一方面,可以使用sqrt(a.b) = sqrt(a).sqrt(b)规则。因此,我可以写
n = 1.0/len(a)
temp = []
for i in len(a):
temp.append(i**n)所以,我有部分数,我可以找到temp元素的乘积。我正在寻找一个基于现有库的更高效和更小的代码。有什么想法吗?
发布于 2022-02-01 16:18:26
一种解决办法是使用对数。试试这个:
a = array([168116745,168117411,168117729,168118170,168118695,168119286,168119610])
print('GM =', np.exp(np.average(np.log(a))))或者,has有一个专用几何平均函数。
https://stackoverflow.com/questions/70943839
复制相似问题