2017-05-13 184 views
0

我有一個名爲dist的多維列表。我想在不使用NumPy的情況下獲取此列表/矩陣上的最大元素的位置。我如何使用內置函數來實現?我使用Python 3.6如何查找列表中最大/最小元素的索引?

dist = [[ 0.0, 
      1804.04, 
      2120.09, 
      5502.24], 
     [ 1804.04, 
      0.0, 
      7395.44, 
      5828.17]] 
+0

爲什麼不NumPy的?使用NumPy非常簡單**和快速**,您只需使用'np.argmax'和'np.unravel_index'。 – Michael

+0

@Michael感謝您的評論和編輯。我的任務需要通過內置函數完成。 – feys

+0

我找到了答案: 我在範圍內(len(dist)): 對於範圍內的j(len(dist)): 如果dist [i] [j] == max(max(dist)): max_index =(i,j) – feys

回答

0

即使我強烈建議NumPy的(見OP的問題,下面的評論),這個人是沒有NumPy的(僅使用內置函數enumerate,也適用於衣衫襤褸的數組):

dist = [[ 0.0, 
      1804.04, 
      2120.09, 
      5502.24], 
     [ 1804.04, 
      0.0, 
      7395.44, 
      5828.17]] # list of lists 

maximum, max_line, max_col = 0, 0, 0 # !!! 
for line, l in enumerate(dist): 
    for col, c in enumerate(l): 
     if c > maximum: maximum, max_line, max_col = c, line, col 
print(maximum, max_line, max_col) 

在標有!!!行假定只有正值是在你的矩陣dist(其從名字dist及其在OP的未經編輯的柱對稱性,以及在零元素對角線我認爲是合理的)。否則,必須爲maximum選擇較小的起始值。

下面是它如何與NumPy的(見np.argmaxnp.unravel_index)工作:

import numpy as np 
dist = np.array(dist) # array 
print(np.unravel_index(np.argmax(dist), dist.shape)) 
相關問題