gpt4 book ai didi

python - numpy.polyfit 不处理 NaN 值

转载 作者:太空狗 更新时间:2023-10-29 18:16:44 25 4
gpt4 key购买 nike

我对这段 Python 代码有疑问:

import matplotlib
matplotlib.use("Agg")

import numpy as np
import pylab as pl

A1=np.loadtxt('/tmp/A1.txt',delimiter=',')
A1_extrema = [min(A1),max(A1)]
A2=np.loadtxt('/tmp/A2.txt',delimiter=',')

pl.close()
ab = np.polyfit(A1,A2,1)
print ab
fit = np.poly1d(ab)
print fit
r2 = np.corrcoef(A1,A2)[0,1]
print r2
pl.plot(A1,A2,'r.', label='TMP36 vs. DS18B20', alpha=0.7)
pl.plot(A1_extrema,fit(A1_extrema),'c-')
pl.annotate('{0}'.format(r2) , xy=(min(A1)+0.5,fit(min(A1))), size=6, color='r' )

pl.title('Sensor correlations')
pl.xlabel("T(x) [degC]")
pl.ylabel("T(y) [degC]")
pl.grid(True)
pl.legend(loc='upper left', prop={'size':8})
pl.savefig('/tmp/C123.png')

A1 和 A2 是包含来自不同传感器的温度读数的数组。我想找到两者之间的相关性并以图形方式显示。但是,偶尔会发生传感器读取错误。在这种情况下,NaN 将代替温度值插入到其中一个文件中。然后 np.polyfit 拒绝拟合数据并返回 [nan, nan] 作为结果。之后所有其他方法也都失败了。

我的问题:如何说服 numpy.polyfit 忽略 NaN 值?N.B.:目前数据集相对较小。我预计一旦部署它们可能会增长到大约 200k...600k 元素。

最佳答案

我知道这有点老了,但是如果你的数组中有 NaN,你必须通过只考虑有限的索引来“清理它们”。这样做的方法是

idx = np.isfinite(x) & np.isfinite(y)
ab = np.polyfit(x[idx], y[idx], 1)

这样你就只会将“好的”点传递给 polyfit。

关于python - numpy.polyfit 不处理 NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28647172/

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