繁体   English   中英

如何获取嵌套列表或矩阵中所有最大元素的索引?

[英]How can i get index of all the greatest elements in a nested list or matrix?

下面的代码可能是解决我的问题的方法,但我对此感兴趣,但没有numpy或任何其他python lib

输入 [[20, 1], [20, 7], [1, 9]]

预期输出 [(0, 0), (1, 0)]

import numpy as np

matrix = [[20, 1], [20, 7], [1, 9]]

arr2D = np.array(matrix)
result = np.where(arr2D == np.amax(arr2D))
listOfCordinates = list(zip(result[0], result[1]))
print(listOfCordinates) 

提前致谢

这可能不是最有效的解决方案,但可以帮助您

matrix = [[20, 1], [20, 7], [1, 9]]
xIndex = []
yIndex = []
maxValues = []
cord = []
finalCord = []
finalMaxIndex = []

for i in range(len(matrix)):

    xIndex.append(i)
    maxSublist = max(matrix[i])
    yIndex.append(matrix[i].index(maxSublist))

for i, j in zip(xIndex, yIndex):

    cord.append((i,j))
    maxValues.append(matrix[i][j])
    maxValue = max(maxValues)

for i in range(len(maxValues)):

    if maxValue == maxValues[i]:
        finalMaxIndex.append(i)
    else:
        pass

for i in finalMaxIndex:
    finalCord.append(cord[i])

print('Index of multiple greatest elements in nested list or matrix:', finalCord)
matrix = [[20, 1], [20, 7], [1, 9]]
output = [(0, 0), (1, 0)]

这在这里应该工作:

matrix = [[20, 1], [20, 7], [1, 9]]

max_n = matrix[0][0]
result = []
for row in range(len(matrix)):
    for col in range(len(matrix[0])):
        if matrix[row][col] == max_n:
            result.append((row, col))
        elif matrix[row][col] > max_n:
            max_n = matrix[row][col]
            result = [(row, col)]

print(result)

首先找到列表列表的最大值,然后使用列表推导找到值等于最大值的元素的位置

>>> lst = [[20, 1], [20, 7], [1, 9]]
>>> m = max(e for sub_lst in lst for e in sub_lst)
>>> [(i, j) for i,sub_lst in enumerate(lst) for j,e in enumerate(sub_lst) if e==m]
[(0, 0), (1, 0)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM