【问题标题】:Average of imported list (python)导入列表的平均值(python)
【发布时间】:2015-03-01 13:19:43
【问题描述】:

我正在尝试获取具有以下格式的列表的平均值: [["195", "106", "100", "95"]].

现在sum(list1) 不起作用(用于sum(list1)/len(list1)(而len(list1) 工作正常):

TypeError: unsupported operand type(s) for +: 'int' and 'list'

如果列表是这样的[195,106,100,95],它会起作用。如果我使用numpy.mean(list1),同样会出错。有什么我可以添加的,所以这会起作用吗?或者也许是我快速转换列表格式的一种方式?

【问题讨论】:

  • 我得到的是TypeError: unsupported operand type(s) for +: 'int' and 'str',因为您的列表包含字符串,而不是整数。
  • 确定您的list1 不包含其他列表对象吗?
  • 您的示例列表在首先转换为整数时工作得很好:sum(map(int, list1)).
  • @SecondLemon 尝试首先发布确切的输入

标签: python list numpy sum average


【解决方案1】:

如果你有一个矩阵,你需要对 嵌套 列表的元素求和。您还需要将它们转换为整数:

total = sum(int(i) for sublist in outerlist for i in sublist)
length = sum(len(sublist) for sublist in outerlist)
average = total / length

这假设您想要所有嵌套列表中所有数字的平均值,因此长度需要反映嵌套列表的长度,而不是外部列表。

使用 Python 3 的演示:

>>> outerlist = [["195", "106", "100", "95"]]
>>> total = sum(int(i) for sublist in outerlist for i in sublist)
>>> length = sum(len(sublist) for sublist in outerlist)
>>> total / length
124.0

【讨论】:

  • 对不起,我有点太含糊了。我会给你我现在得到的确切脚本。 >>> list0 = [["180", "108", "190", "120"],["190", "102", "100", "120"],["195", "104", "190", "120"],["205", "109", "100", "120"]] >>> list1 = list(map(lambda x:x[0],list0))现在我要list1的总和
  • 奇怪,现在它突然起作用了。无论如何sum(map(int, list1)) 现在工作正常。谢谢
【解决方案2】:

这个错误,因为元素是字符串 如果您想获得平均值,请使用此代码

from __future__ import division #for the exact division
x = ["195", "106", "100", "95"]
x_int = [int(y) for y in x]
print sum(x_int) / len(x_int)

【讨论】:

  • 否,错误消息显示 OP 在序列中有一个 list 对象。
猜你喜欢
  • 2016-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多