gpt4 book ai didi

python - 为什么我不断收到此错误 'RuntimeWarning: overflow encountered in int_scalars'

转载 作者:行者123 更新时间:2023-11-28 19:00:30 31 4
gpt4 key购买 nike

我正在尝试将二维 numpy 数组的所有行值和列值与显式 for 循环 相乘:

product_0 = 1
product_1 = 1
for x in arr:
product_0 *= x[0]
product_1 *= x[1]

我知道乘积会爆炸成一个非常大的数字,但根据我以前的经验,python 在处理非常非常大的数字时没有内存问题。
所以据我所知,这是 numpy 的一个问题,除了我没有将巨大的产品存储在 numpy 数组或任何 numpy 数据类型中,因为它只是一个普通的 python 变量。

知道如何解决这个问题吗?

使用非就地乘法没有帮助 product_0 = x[0]*product_0

最佳答案

Python int任意精度 表示,因此它们不能溢出。但是 numpy 在底层使用 C++,因此最高的长符号整数具有固定精度,2^63 - 1。你的数字远远超过这个值,平均有 ((716-1)/2)^86507)

当您在 for 循环中提取 x[0] 时,这仍然是一个 numpy 对象。要使用 python 整数的全部功能,您需要将其明确指定为 python int,如下所示:

product_0 = 1
product_1 = 1
for x in arr:
t = int(x[0])
product_0 = product_0 * t

并且它不会溢出。

根据您的评论,这使您的问题更加具体,您最初的问题是为每一行/列计算数组的几何平均值。这里的解决方案:

我首先生成一个与您的数组具有相同属性的数组:

arr = np.resize(np.random.randint(1,716,86507*2 ),(86507,2))

然后,计算每列/行的几何平均值:

from scipy import stats

gm_0 = stats.mstats.gmean(arr, axis = 0)
gm_1 = stats.mstats.gmean(arr, axis = 1)

gm_0 将是一个数组,其中包含 xy 坐标的几何平均值。 gm_1 而是包含行的几何平均值。

希望这能解决您的问题!

关于python - 为什么我不断收到此错误 'RuntimeWarning: overflow encountered in int_scalars',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53239890/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com