如何避免在超过 20.000 个元素的 for 循环中出现“运行时警告:在 log10 中遇到除零”?

问题描述 投票:0回答:1

我有一个名为

data
的数据列表。该列表包含 21073 个嵌套
numpy
数组。每个 numpy 数组依次包含 512 位长浮点值。从范式上看,一个嵌套的 numpy 数组如下所示:

[534.42623424, 942.2323, 123.73434 ...]
.

此外,我还有另一个数据列表,名为

freq

freq = [0.0009, 0.0053, 0.0034 ...]
,长度也是 512 位。

目标: 我使用 for 循环通过每个嵌套 numpy 之间的

scipy.linregress
(https://docs.scipy.org/doc/scipy/reference/ generated/scipy.stats.linregress.html) 计算线性最小二乘回归
list
freq
中的数组如下:

for i in list:
slope = sp.stats.linregress(x=np.log10(freq), y=np.log10(i))[0]

代码有效。但有一个问题。

问题:我认为由于 for 循环(= 21073)的巨大尺寸,我总是得到错误

RuntimeWarning: divide by zero encountered in log10
。重要的是,每次我再次运行代码时,for 循环中发生此错误的位置都会有所不同。也就是说,有时它发生在 n = 512 处,然后又在 n = 18766 处接近末尾。

问题: 我说的对吗?问题与 for 循环的庞大尺寸有关。我该如何解决这个问题?

python arrays numpy integer-overflow int64
1个回答
0
投票

不确定,但试试这个:

for i in range(len(list)):
  slope = sp.stats.linregress(x=np.log10(freq[i]), y=np.log10(list[i]))[0]

并考虑更改变量名称“list”。

© www.soinside.com 2019 - 2024. All rights reserved.