在python中绘制数组的平均值

时间:2018-07-11 21:34:52

标签: python numpy average

我有一个温度随时间变化的二维数组数据。大约有7500个x值和相应的y值(因此,每个x都有一个y)。

它看起来像这样: plot

中间的蓝线是我尝试绘制绘图线失败的结果,该绘图线表示我的数据的平均值。代码:

import numpy as np
import matplotlib.pyplot as plt
data=np.genfromtxt("data.csv")
temp_av=[np.mean(data[1])]*len(data[0])
plt.figure()
plt.subplot(111)
plt.scatter(data[0],data[1])
plt.plot(data[0],temp_av)
plt.show()

不过,我需要的是一条曲线,它将随温度的升高而变化。基本上,一条线将位于数据点的中间。

我用Google搜索了一些解决方案,但是我发现的建议是在一个x具有多个y值的情况下如何计算平均值。我知道该怎么做,但是在这种情况下并没有帮助。

我的下一个想法是使用循环来计算每2个相邻点的平均值。但是我不确定如何做到最好,还有没有更好的解决方案。

此外,我了解我需要计算另一个数组。绘图仅用于表示。

1 个答案:

答案 0 :(得分:0)

如果我不正确,则您要绘制的是趋势线。您可以使用numpy函数“ polyfit”来实现。如果这是您要查找的内容,请尝试对您的代码进行小的修改

import numpy as np
import matplotlib.pyplot as plt
data=np.genfromtxt("data.csv")
plt.figure()
plt.subplot(111)
plt.scatter(data[0],data[1])

pfit = np.polyfit(data[0], data[1], 1)
trend_line_model = np.poly1d(pfit)

plt.plot(data[0], trend_line_model(data[0]), "m--") 
plt.show()

这将以虚线的洋红色绘制趋势线