Найти максимальное значение из массива - PullRequest
0 голосов
/ 21 марта 2019

Введите свой код, чтобы найти и распечатать состояние с наибольшей частотой.Необходимо напечатать и название штата, и частоту.

[['NSW' '87'] ['QLD' '49'] ['SA' '14'] ['VIC' '54'] ['WA' '19']]

У меня есть эта информация, и я должен извлечь состояние с самой высокой частотой, 87.Я новичок в NumPy. Пожалуйста, руководство.

1 Ответ

0 голосов
/ 21 марта 2019

Не уверен, что такое [['NSW' '87'] ['QLD' '49'] ['SA' '14'] ['VIC' '54'] ['WA' '19']], но я думаю, вы хотели сказать [['NSW', '87'], ['QLD', '49'], ['SA', '14'], ['VIC', '54'], ['WA', '19']].

Итак, учитывая:

>>> l = [['NSW', '87'], ['QLD', '49'], ['SA', '14'], ['VIC', '54'], ['WA', '19']]

Мы можем использовать выражения генератора:

>>> highest = max(item[1] for item in l)
>>> (print(item) for item in l if item[1] == highest)
['NSW', '87']

Или:

>>> highest = max(item[1] for item in l)
>>> for item in l:
...    if item[1] == highest:
...        print(item)
['NSW', '87']

Или используйте zip:

>>> keys, values = zip(*l)
>>> highest = max(values)
>>> print([keys[values.index(highest)], highest])
['NSW', '87']

Используя timeit.timeit (и удаляя print каждого примера), мы получаем следующие значения:

1.819037475     # First Example
1.648459721     # Second Example
1.406044623     # Third Example

Вы должны использовать последний, который использует zip, так как он быстрее, чем другие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...