numpy.polyfit不处理NaN值

2024-04-27 19:06:41 发布

您现在位置:Python中文网/ 问答频道 /正文

这段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:目前数据集相对较小。我预计一旦部署,它们可能会增长到大约20万到60万个元素。


Tags: importnumpya2abmatplotliba1npmin
1条回答
网友
1楼 · 发布于 2024-04-27 19:06:41

我知道这有点旧,但是如果数组中有nan,就必须只考虑有限的索引来“清理它们”。方法是

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

这样你只会把“好”点传给polyfit。

相关问题 更多 >