我有一个名为
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 循环的庞大尺寸有关。我该如何解决这个问题?
不确定,但试试这个:
for i in range(len(list)):
slope = sp.stats.linregress(x=np.log10(freq[i]), y=np.log10(list[i]))[0]
并考虑更改变量名称“list”。