【问题标题】:Simple Numpy Min and Max from certain column来自特定列的简单 Numpy 最小值和最大值
【发布时间】:2015-01-01 16:18:57
【问题描述】:

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

【问题讨论】:

  • 你不能在普通 Python 列表上使用numpy 风格的索引。

标签: python python-2.7 numpy max min


【解决方案1】:

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来做,你需要迭代行,拆分行,获取第三项([2]),......

顺便说一句,您不需要使用file.readlines,因为您不需要同时使用所有行。迭代文件将产生行。

【讨论】:

    猜你喜欢
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    相关资源
    最近更新 更多