【发布时间】:2015-04-12 14:53:36
【问题描述】:
我有一个数据文件,它在七列数字中包含六行数字。
例子:
5 8 3 21 10 99 3
14 20 100 34 94 2 3
4 2 102 330 101 3 9
9 22 77 721 30 4 9
99 3 4 1 0 55 8 4
8 90 3 1 99 4 101
我有以下代码,想知道如何求每行和每行的平均值。
def main():
fileName = input("Enter the name of the data file: ")
print()
infile = open(fileName, "r")
# get data
sum = 0
count = 0
data = infile.read().strip().split()
for line in len(data):
sum = sum / len(data)
print("This is sum: ", sum)
main()
我只能打开文件一次,我必须用循环完成所有事情,这意味着我必须对驻留在第一个循环中的外观中的列和行进行所有数学运算。输出应该类似于:
在上交时,我的讲师可能会将数据文件设置为超过 7 列和 6 行。因此,代码必须能够适应这种变化。下面的输出来自另一个人,他有类似的程序要制作,但使用了固定的文件格式。如果添加了 5、10、15、20、25、95、100... 等新列或额外的汽车,则该代码将不起作用。
Speed (MPH)
Car : 30 40 50 60 70 80 90 : Average Noise
----------------------------------------------------------------------------
1 : 88 90 94 98 100 110 120 : 100.0
2 : 75 77 80 86 94 103 113 : 89.7
3 : 80 83 85 94 111 111 121 : 97.9
4 : 68 71 76 85 96 122 125 : 91.9
5 : 77 84 91 102 105 112 119 : 98.6
6 : 81 85 90 96 102 109 134 : 99.6
----------------------------------------------------------------------------
Average : 78.2 81.7 86.0 93.5 101.3 111.2 122.0
Maximum : 88 90 94 102 111 122 134
有人知道如何去做吗?一切都必须灵活地根据导入的数据文件进行更改。就像 Excel 工作表一样。
【问题讨论】:
-
这不是本网站的运作方式。但是,为了帮助您入门,我建议您研究一下二维数组。
-
for line in len(data):... 整数不可迭代。 -
Anzel,当我试图获取一行代码时,我遇到了那个问题,以及其他所有的砖墙,并找到了一种方法来获取一行的总和,然后将它除以总数该行内的 int 数。在我看来,我需要长度,但我不知道如何正确获得该长度,然后在代码本身中使用它。就个人而言,我认为这是一项非常不具建设性的任务,因为 excel 将是一个更好的程序。对 Vineet,谢谢,我会研究一下二维数组。
-
啊。我使用 NumPy 发布了答案。然后阅读我必须用循环完成所有事情。
-
Vineet,这就是你所说的二维数组吗? myArray = [] infile = open(fileName, "r") lines = infile.readlines() for line in lines: myArray.append(line.split()) 结果:这是总和:[['88', '90 ', '94', '98', '100', '110', '120'], ['75', '77', '80', '86', '94', '103', '113 '], ['80', '83', '85', '94', '111', '111', 1'], ['68', '71', '76', '85', ' 96', '122', '125'], ['77', '84', '91', '102', '105', '112', '119'], ['81', '85' , '90', '96', '102', '109', '134']]
标签: python excel import range average