python - 计算并绘制 (Y) 总计列表中每 (X) 项的平均值

标签 python numpy python-2.7 matplotlib

在发布此内容之前,我已经搜索了(4 天)。如果它太初级并且浪费您的时间,我提前表示歉意。我已经使用 pyplot 和 matplotlib 通过使用他们的教程示例成功生成了一些基本图,但对我需要完成的任务没有任何作用。

本质上:

  • 我有一个存在于单个文件中的数字列表。
  • 每行包含一个数字,对应于完成所需的毫秒数 某项重复的任务。
  • 此文件中有超过一百万个条目,并且可能会超出这个范围。

20 的示例:

173
1685
1152
253
1623
390
84
40
319
86
54
991
1012
721
3074
4227
4927
181
4856
1415

最终我需要做的是计算一系列单独的总数(均匀分布在条目的绝对总数上)——然后使用任何 python 绘图库绘制这些平均值。为了便于使用,我考虑过使用 pyplot。

  • X 轴将对应于已完成的任务总数,而 Y 轴将表示完成任务所需的毫秒数(在本例中为每 5 个任务完成所需的平均时间)。

即:

Entries 1-5 = (plottedTotalA)
Entries 6-10 = (plottedTotalB)
Entries 11-15 = (plottedTotalC)
Entries 16-20 = (plottedTotalD)

据我所知,我不需要无限期地存储变量的值,只需在处理它们时(按顺序)将它们传递给绘图仪。我尝试使用以下示例对上述 20 个列表中的 5 个条目进行求和(有效),但我不知道如何一次动态传递 5 个条目直到完成,同时保留计算出的平均值最终将传递给 pyplot。

例如:

Python 2.7.3 (default, Jul 24 2012, 10:05:38) 
[GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> plottedTotalA = ['173', '1685', '1152', '253', '1623']
>>> sum(float(t) for t in plottedTotalA)
4886.0

最佳答案

假设您的 n 个值位于名为 x 的列表中。然后将 x reshape 为具有 5 列的数组 A,并计算每行的平均值。然后您可以简单地绘制结果向量。

x = np.array(x)
n = x.size
A = x[:(n // 5) * 5].reshape(5, -1)
y = A.mean(axis = 0)
plot(y)

编辑:根据 tacaswell 的评论更改了我的代码

但是,如果您实际上有超过一百万个条目,则可能会遇到内存问题。您还可以使用名称 x 代替 A 和 y。这样您就可以覆盖初始数据并节省一些内存。

希望这有帮助

关于python - 计算并绘制 (Y) 总计列表中每 (X) 项的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817034/

相关文章:

python - 用于 superest 的 Flask appbuilder 中的 SecurityManager 装饰器

python - 如何在pygame中根据鼠标 Action 绘制矩形

Python 什么也没显示

python - 根据尾随行在 Pandas 数据框中进行计算

Python I/O 读取和追加(写入)

python - PyGame 中康威的生命游戏没有生成正确的模式

python - 是否有一个 Python 模块可以透明地使用类文件对象作为缓冲区?

python - 为什么使用inspect模块查不到Numpy中conjugate的源码?

python - 如何将 PyQtGraph GraphicView 窗口设置为最大化状态

python - 使用 Python 从进程的内存中读取数据