【问题标题】:Iterated sum and mean [duplicate]迭代总和和平均值
【发布时间】:2016-06-30 05:12:11
【问题描述】:

我有一个包含两列的数据,如下所示。我正在尝试为第一列的每个值估计第二列的标准偏差。所以 284、285 和 286 的值应该有它们连续的标准差值。

284 4
284 9
284 6
285 0
285 1
285 3
286 9
286 3
286 1

我设法计算了运行总和,但我坚持计算平均值。到目前为止,这是我的代码:

b = [(line.split("\t")) for line in data]
sums = [(sum(float(v) for k, v in g)) for k, g in groupby(b, key=itemgetter(0))]

lens = [(len(float(v) for k, v in g)) for k, g in groupby(b, key=itemgetter(0))]

sums 工作正常并计算第一列的每次更改的总和,但是 len() 不起作用并崩溃并显示消息:

TypeError: object of type 'generator' has no len()

以前有人遇到过这种情况吗?

【问题讨论】:

  • 您是否尝试搜索确切的错误消息

标签: python python-2.7


【解决方案1】:

错误在这部分代码中:

len(float(v) for k, v in g)

相当于:

len(g)

错误所指的生成器是您在括号内执行的列表理解。如果您确实想要执行您编写的操作(我认为您不会这样做),则代码需要:

len([float(v) for k, v in g])

【讨论】:

  • 这是一个重复的问题,不需要答案,因为现有的已经很好了。 :)
猜你喜欢
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
相关资源
最近更新 更多