【问题标题】:Numpy Float128 PolyfitNumpy Float128 Polyfit
【发布时间】:2017-07-08 12:12:28
【问题描述】:

我正在使用 numpy 的 polyfit 来找到一组数据的最佳拟合曲线。但是,numpy 的 polyfit 返回一个 float64 数组,并且由于计算的系数非常大/小(即 1e-200),它返回了乘法中遇到的溢出错误:

RuntimeWarning:在乘法中遇到溢出 scale = NX.sqrt((lhs*lhs).sum(axis=0))

我尝试将初始数组转换为 float128,但这似乎不起作用。有没有办法解决这个溢出问题/处理这么大的系数?

【问题讨论】:

  • 你指定的度数是多少?
  • 相当大 - 我将其设置为 75 以尽量减少最佳拟合曲线中的振荡。我拥有的数据集之一类似于高斯曲线,但将 polyfit 设置为 deg = 45,错误消失了,但最佳拟合曲线振荡得更多。

标签: python arrays numpy


【解决方案1】:

您可以使用变量的对数版本 (np.log10),因此在处理 1e-200 之类的内容时,您将获得 -200、更少的内存和更高的效率。

【讨论】:

  • 这实际上不是我传入的变量——我相信,它是 np.polyfit 产生的最合适的线导致了这个问题。我的实际数据完全在 float64 的范围内。如果我跟踪错误,它是在对 polyfit 的调用中产生的
猜你喜欢
  • 2021-07-24
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2016-04-12
  • 2015-03-30
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多