[英]How to find min/max values from rows and columns in Python?
我想知道如何從數據集(基本上是文本文件)中找到最小值和最大值。 它具有50行50列。
我知道我可以設置一個控制循環(特定於循環)以使其讀取每一行和每一列,並確定最小/最大值。 但是,我不確定該怎么做。
我認為行和列需要先轉換為列表,然后再使用split()
函數。 我嘗試按以下步驟進行設置,但似乎不起作用:
for x in range(4,50): # using that range as an example
x.split()
max(4,50)
print x
Python的新手。 請原諒我的錯誤。
如果文件包含規則(矩形)矩陣,並且知道文件包含多少行標題信息,則可以跳過標題信息,並使用NumPy輕松完成此操作:
import numpy as np
f = open("file.txt")
# skip over header info
X = np.loadtxt(f)
max_per_col = X.max(axis=0)
max_per_row = X.max(axis=1)
嘗試這樣的事情:
data = []
with open('data.txt') as f:
for line in f: # loop over the rows
fields = line.split() # parse the columns
rowdata = map(float, fields) # convert text to numbers
data.extend(rowdata) # accumulate the results
print 'Minimum:', min(data)
print 'Maximum:', max(data)
請注意,如果要分割除空格以外的其他內容(例如逗號) , split()將使用可選參數。
嗯...您確定作業不在這里適用嗎? ;) 而不管:
您不僅需要拆分輸入行,還需要將文本值轉換為數字。 因此,假設您已將輸入行讀入in_line,則應執行以下操作:
...
row = [float(each) for each in in_line.split()]
rows.append(row) # assuming you have a list called rows
...
一旦有了行列表,就需要獲取列:
...
columns = zip(*rows)
然后,您可以遍歷每一行和每一列,調用max():
...
for each in rows:
print max(each)
for eac in columns:
print max(each)
編輯:這是更完整的代碼,顯示如何打開文件,遍歷文件行,關閉文件並使用上述提示:
in_file = open('thefile.txt', 'r')
rows = []
for in_line in in_file:
row = [float(each) for each in in_line.split()]
rows.append(row)
in_file.close() # this'll happen at the end of the script / function / method anyhow
columns = zip(*rows)
for index, row in enumerate(rows):
print "In row %s, Max = %s, Min = %s" % (index, max(row), min(row))
for index, column in enumerate(columns):
print "In column %s, Max = %s, Min = %s" % (index, max(column), min(column))
編輯:為了新學校的美好,請不要使用我的舊的,有風險的文件處理。 使用新的安全版本:
rows = []
with open('thefile.txt', 'r') as in_file:
for in_line in in_file:
row = ....
現在,您已經有了很多保證,即使您在讀取文件時拋出異常,也不會意外地使文件保持打開狀態。 另外,您可以完全跳過in_file.close()
而不會感到內。
這對您有用嗎?
infile = open('my_file.txt', 'r')
file_lines = file.readlines(infile)
for line in file_lines[6:]:
items = [int(x) for x in line.split()]
max_item = max(items)
min_item = min(items)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.