我有一个名为dist
的多维数据列表。我想在不使用NumPy 的情况下获取此列表/矩阵上的max元素的位置。如何使用内置函数执行此操作?我使用的是Python 3.6
dist = [[ 0.0,
1804.04,
2120.09,
5502.24],
[ 1804.04,
0.0,
7395.44,
5828.17]]
答案 0 :(得分: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.argmax
和np.unravel_index
):
import numpy as np
dist = np.array(dist) # array
print(np.unravel_index(np.argmax(dist), dist.shape))