一个人如何在不导入外部模块(Matplotlib以外)的情况下绘制平均值



这是指向文件的链接,其中包含'sunspots.txt'中的信息。除了外部模块matploblib.pyplot和seaborn之外,一个人如何计算跑步平均值而不导入诸如Numpy和Future之类的外部模块?(如果有帮助,我可以在没有numpy的情况下linspace和loadtxt。)

如果有帮助,到目前为止,我的代码在下面发布:

## open/read file
f2 =     open("/Users/location/sublocation/sunspots.txt", 'r')
## extract data
lines = f2.readlines()
## close file
f2.close()
t = [] ## time
n = [] ## number
## col 1 == col[0] -- number identifying which month
## col 2 == col[1] -- number of sunspots observed
for col in lines: ## 'col' can be replaced by 'line' iff change below is made
    new_data = col.split() ## 'col' can be replaced by 'line' iff change above is made
    t.append(float(new_data[0]))
    n.append(float(new_data[1]))
## extract data ++ close file
## check ##
# print(t)
# print(n)
## check ##
## import
import matplotlib.pyplot as plt
import seaborn as sns
## plot
sns.set_style('ticks')
plt.figure(figsize=(12,6))
plt.plot(t,n, label='Number of sunspots oberved monthly' )
plt.xlabel('Time')
plt.ylabel('Number of Sunspots Observed')
plt.legend(loc='best')
plt.tight_layout()
plt.savefig("/Users/location/sublocation/filename.png", dpi=600)

这个问题来自该大学的Weblink(PDF的第11页,本书的第98页,练习3-1)。

在将其标记为重复之前:

这里发布了类似的问题。不同之处在于,所有已发布的答案都需要导入诸如Numpy和Future之类的外部模块,而我试图在没有外部进口的情况下进行(上面的例外)。

需要平滑的嘈杂数据

y = [1.0016, 0.95646, 1.03544, 1.04559, 1.0232,
     1.06406, 1.05127, 0.93961, 1.02775, 0.96807,
     1.00221, 1.07808, 1.03371, 1.05547, 1.04498,
     1.03607, 1.01333, 0.943, 0.97663, 1.02639]

尝试一个窗口大小n

的跑步平均值
n = 3

每个窗口可以由由slice

表示
window = y[i:i+n]

需要一些东西将平均值存储在

averages = []

迭代数据的N长度切片;获取每个切片的平均值;将平均值保存在另一个列表中。

from __future__ import division  # For Python 2
for i in range(len(y) - n):
    window = y[i:i+n]
    avg = sum(window) / n
    print(window, avg)
    averages.append(avg)

当您绘制平均值时,您会注意到的平均值少于数据中的示例。


也许您可以导入内部/内置模块并使用此答案-https://stackoverflow.com/a/14884062/2823755


使用running average algorithm python

进行大量搜索搜索

最新更新