![](/img/trans.png)
[英]Find min value column and min value column name in Python DataFrame
[英]Find the row and column with the min value in python?
我的程序中有一個函數可以進行拆分和浮動。 然后將矩陣傳遞給主程序。 現在,我有一個函數來查找具有最小值的行和列。 我正在獲取所有值的列表,但沒有具有最小值的行和列。
def closest_pair(e):
for row in range(len(e)):
for col in range(0,len(row),1):
minrow = min(e[row])
mincol = min(e[col])
return ([minrow], [mincol])
E是從main傳遞到此函數的平方矩陣。 輸入是txt文件,其值如下所示:
2 1 7 7
1 2 7 7
2 5 6 7
5 6 8 9
預期的輸出應為(1、1)或第1行和第1列,矩陣中的值較低。
這幫助我找到了行和列的最小值,但是輸出是得到這對。 同樣對於第一個值為0的值,0不會計數,因此,如果(0,0)的值為0,那么該值就不會算作最小值。 這樣說,例如,如果第1行和第1列的值是[2,2]作為對,並且是比輸出(1,1)唯一的最小對。
您需要找到每行的最小值,然后才能確定具有最小列的行的坐標:
result = min((min((v, c) for c, v in enumerate(row)), r) for r, row in enumerate(e))
return result[1], result[0][1]
此代碼使用enumerate()
與列索引來注釋每一個值, 每行找到最小值,注釋每行最小與行號(再次用enumerate
),並且得到最小的行。 結果是帶有((value, column), row)
的嵌套元組,我們對其進行解包以返回行索引和列索引。
演示:
>>> e = [[2, 1, 7, 7], [1, 2, 7, 7], [2, 5, 6, 7], [5, 6, 8, 9]]
>>> result = min((min((v, c) for c, v in enumerate(row)), r) for r, row in enumerate(e))
>>> result[0][1], result[1]
(0, 1)
因此位置e[0][1]
是矩陣中的最小值。 如果您還想包括該頭寸的確切值,請返回:
return result[1], result[0][1], result[0][0]
e
是列表列表,對嗎?
因此min(e[row])
和min(e[col])
會給您列表。
您還可以通過枚舉更輕松地遍歷列表
for col, row in enumerate(e):
minrow = min(row)
mincol = min([row[col] for row in e]) # need to transpose to a new list
return ([minrow], [mincol])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.