Как найти самые большие элементы из матрицы с координатными данными? - PullRequest
0 голосов
/ 18 июня 2020

Мне нужна функция, которая находит наибольшее значение и печатает его координаты. В случае более одного максимального элемента, все они должны быть напечатаны.

Пример матрицы расстояний:

[[0.         0.4        0.66666667 0.85714286]
 [0.4        0.         0.4        0.85714286]
 [0.66666667 0.4        0.         1.        ]
 [0.85714286 0.85714286 1.         0.        ]]

Моя функция, которая дает только последнее наибольшее расстояние:

def maxelement(arr):
    cords = []
    no_of_rows = len(arr) 
    no_of_column = len(arr[0])   
    for i in range(no_of_rows): 
        max1 = 0
        for j in range(no_of_column): 
            if arr[i][j] > max1 : 
                max1 = arr[i][j]
                o = i
                a = j
    cords.append(a+1)
    cords.append(o+1)
    print("The biggest distance is:", max1,", for sets:", cords)

Ответы [ 2 ]

0 голосов
/ 18 июня 2020
def maxelement(arr):
    cords = []
    no_of_rows = len(arr) 
    no_of_column = len(arr[0])
    max1 = max(max(arr))  
    for i in range(no_of_rows):
        for j in range(no_of_rows):
            if arr[i][j] == max1:
                cords.append([i,j])
    print("The biggest distance is:", max1,", for sets:", cords)
array = [[0.0,0.4,0.66666667,0.85714286],[0.4,0.0,0.4,0.85714286],[0.66666667,0.4,0.0,1.0],[0.85714286,0.85714286, 1.,0.,]]
maxelement(array)
0 голосов
/ 18 июня 2020

Это будет работать. Дайте мне знать, если у вас возникнут вопросы.

def maxelement(arr):
    cords = []
    no_of_rows = len(arr) 
    no_of_column = len(arr[0])
    coords = [(R,C) for R in range(no_of_rows) for C in range(no_of_column)] # W and H are nicer here...
    max1 = max([arr[R][C] for R,C in coords])
    cords = [(R,C) for R,C in coords if arr[R][C] == max1]
    print("The biggest distance is:", max1,", for sets:", cords)



A = [[1,2,3],[4,5,6],[7,8,9]]
maxelement(A)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...