Найти максимальное значение для кортежа с соответствующей парой - PullRequest
1 голос
/ 20 февраля 2020

У меня есть длинный Python кортеж, где я бы хотел найти наибольшее значение. У меня есть некоторые числовые значения и их вероятности. Выборка кортежа выглядит следующим образом:

(array([ 5,  5,  3, ..., -1, -4, --5]), array([ 0.25,  0.75,  0.8, ...0.05, 0.2, 0.6])

Я хочу иметь возможность извлечь наибольшую вероятность, но получить для нее соответствующее числовое значение (X), чтобы в основном создать новый кортеж. Примерно так, основываясь на числах выше:

> Max tuple: ([3,0.8]) 

Я сделал что-то подобное, например, new_tuple = max(map(max, tuple_list))[1], но это просто дает мне наибольшую вероятность, а не число, которому оно соответствует, как я могу извлечь наибольшее 2-е число (вероятность) для создания нового кортежа?

Ответы [ 3 ]

2 голосов
/ 20 февраля 2020

Вы можете сделать:

>>> tuple(np.stack(data)[:,np.argmax(data[1])])
(3.0, 0.8)                                                                                                                                                                                                         
2 голосов
/ 20 февраля 2020

Вы можете сжать два элемента и получить максимум с помощью пользовательского ключа.

>>> max(zip(*l), key=lambda x:x[1])
(3, 0.8)
1 голос
/ 20 февраля 2020

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

>>> import numpy as np
>>> data = (np.array([ 5,  5,  3, -1, -4, -5]), np.array([ 0.25,  0.75,  0.8, 0.05, 0.2, 0.6]))
>>> max(zip(*data), key=lambda i: i[1])
(3, 0.8)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...