我有大约8列的输入文件,我只需要查找每列的最小值和最大值。我不介意逐列找到它。寻找快速建议。谢谢
输入文件
00022da391f0 00022dcea331 9 19152.00 2128.00 1330.0 8404.0 424.0
00022da391f0 00022d127ece 84 349124.00 4156.24 1773.5 33616.0 333.0
0004232b94d0 00022db0b1b7 55 35204.00 640.07 482.0 1688.0 341.0
00022db0b1b7 00055d102f8c 10 17371.00 1737.10 676.5 8619.0 333.0
00022db0b1b7 00022d127ece 53 510239.00 9627.15 1531.0 130610.0 368.0
代码
infile = open('input', 'r')
file_lines = file.readlines(infile)
for line in file_lines[:,2]:
items = [int(x) for x in line.split()]
max_item = max(items)
min_item = min(items)
print max_item
输出应该是col [2]中的最大值,即输入文件中的第3列。但相反,我得到错误
Error:
Traceback (most recent call last):
File "min_max.py", line 4, in <module>
for line in file_lines[:,2]:
TypeError: list indices must be integers, not tuple
答案 0 :(得分:3)
file.readlines
不返回numpy数组,而是返回行(字符串)列表。您需要使用类似numpy.loadtxt
的内容。
>>> import numpy as np
>>> np.loadtxt('input', usecols=[2]).max()
84.0
>>> np.loadtxt('input', usecols=[2], dtype=int).max()
84
如果你想用open
做,你需要迭代线,分割线,获得第3项([2]
),....
file.readlines
,因为你不需要一次性使用所有线路。 Itearing文件将产生行。