所以我写了一个函数,它读取一个文件(csv)并以列表的形式返回每行数字的平均值。 我相信代码应该可以工作,但是我已经尝试了很多方法,无法从列表中获取数据转换为数值(然后可以求和等)。在
def line_averages(filename):
file = open(filename, 'r')
data = file.readlines()
file.close()
x = []
for i in data:
data_splitted = i.split()
line_average = sum(data_splitted) / len(data_splitted)
x.append(line_average)
return x
特别是当我用我的文件运行这个文件时,我得到:
^{pr2}$抱歉,如果一个简单的解决办法,因为我是新来的这个lol
读入字符串数据,将其拆分为子字符串,然后尝试对字符串求和。您必须先将输入转换为数字类型,然后才能添加它们。在
所以,它看起来是真实的你已经意识到你的错误来源是你的
list
包含字符串而不是数字数据类型,这就是加法不能工作的原因。这样做的天真方法(我可以补充一点,这是一个非常合理的方法),就是简单地循环:好的,我们没有使用
^{pr2}$sum
函数。是否也可以做类似的事情:这也很好,不过,它创建了一个不必要的中间列表。但是请注意上面两个循环的模式:您将同一个函数反复应用于列表中的每个元素,即将函数映射到列表中的。好吧,Python包括电池:
注意,在Python3上,上面的解决方案不会创建不必要的中间列表!在
文件中的数据是如何排列的?我认为您应该在split函数中使用分隔符作为参数。例如,如果文件包含以下行:
必须使用i.split(“,”)。 当数据被正确分割时,你可以使用numpy和类似的符号来轻松计算平均值
line_average = np.mean([float(a) for a in data_splitted])
你必须把在你开始工作的时候。在
相关问题 更多 >
编程相关推荐