我有一个包含8列的文本文件,就像这样
100 40 37 98 47 55 75 67
50 84 93 67 85 90 42 57
68 95 74 75 87 95 32 86
对于我的函数,我需要查找指定列的平均值以及所有列的平均值。因此,要做到这一点,我需要能够使用列,而且我不确定如何将所有列转换为列表。
f=open(file,"r")
lines=f.readlines()
result=[]
for i in lines:
result.append(i.split(' ')[1])
f.close()
我只能提取1列,但如果有人可以帮助我提取每一列,我将不胜感激。我的老师希望我们使用纯python,因此没有像panda或numpy这样的插件。谢谢
答案 0 :(得分:1)
我建议提取行,然后转置结果列表列表:
with open(filename) as f:
columns = list(zip(*(map(int, row.split()) for row in f)))
如果您愿意,我可以帮助解释其中的任何部分。
答案 1 :(得分:1)
f = open(filename,"r")
lines = []
for line in f:
lines.append(map(int, line.strip().split()))
f.close()
现在我们有一个整数列表的列表:
print(lines)
# [[100, 40, 37, 98, 47, 55, 75, 67], [50, 84, 93, 67, 85, 90, 42, 57], [68, 95, 74, 75, 87, 95, 32, 86]]
将行列表转换为列列表称为“转置”,因此使用此答案Transpose list of lists,我们可以获得结果:
result = map(list, zip(*lines))
print(result)
# [[100, 50, 68], [40, 84, 95], [37, 93, 74], [98, 67, 75], [47, 85, 87], [55, 90, 95], [75, 42, 32], [67, 57, 86]]