某些列中的简单Numpy Min和Max

时间:2014-11-05 12:57:03

标签: python python-2.7 numpy max min

我有大约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

1 个答案:

答案 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文件将产生行。