如何确保Python进入文件行的末尾



早上好,由于内存问题,我试图创建一个均值函数,在我的文件中逐行计算文件中每列的均值。我的文件有5000列和20000行。但是,当我打印这个函数的输出时,列表的最后一部分会填充零(我为初始化它而设置的值(。我试着一个接一个地写结果,但它一直到4482,而不是5000。有没有办法确保他坚持到最后?

这是我的代码:


def mean_by_line(file, size):
calc=[]
file=open(file,"r")
line=file.readline()
table_line=line.split(",")
mean_vector=[0 for i in range(len(table_line)-1)]
#We initialize the first one since we need it beforehand for the length
for j in range(len(table_line)-1):
calc.append(float(table_line[j]))
#We get the other values
for i in range(1,size):
line = file.readline()
table_line = line.split(",")
for j in range(len(table_line)-1):
calc[j]+= float(table_line[j])
#We calculate the average
for j in range(len(table_line)-1):
mean_vector[j]=calc[j]/size
print(j, mean_vector[j])
file.close()
return mean_vector

提前感谢

让我们假设我们有一个用逗号分隔的数字的文件。还假设每一行上的数字计数总是相同的(但未知(;列";。

然后:

totals = None
line_count = 0
with open('atest.csv') as csv:
for line in map(str.strip, csv):
nums = line.split(',')
if totals is None:
totals = [0.0] * len(nums)
for i, v in enumerate(map(float, nums)):
totals[i] += v
line_count += 1
for i in range(len(totals)):
totals[i] /= line_count
print(totals)

非常感谢您的回答。我再次检查了输入文件,奇怪的是,最后一行不像其他行那样有5k列。所以这是测量数据时的一个错误。谢谢你,很抱歉我犯了这么严重的错误…

最新更新