Вернуть название страны с наибольшим номером занятости в Python

Я работаю с NumPy, и передо мной стоит следующая задача:

Это мои данные:

import numpy as np

# First 20 countries with employment data
countries = np.array([
    'Afghanistan', 'Albania', 'Algeria', 'Angola', 'Argentina',
    'Armenia', 'Australia', 'Austria', 'Azerbaijan', 'Bahamas',
    'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium',
    'Belize', 'Benin', 'Bhutan', 'Bolivia',
    'Bosnia and Herzegovina'
])


# Employment data in 2007 for those 20 countries
employment = np.array([
55.70000076,  51.40000153,  50.5       ,  75.69999695,
58.40000153,  40.09999847,  61.5       ,  57.09999847,
60.90000153,  66.59999847,  60.40000153,  68.09999847,
66.90000153,  53.40000153,  48.59999847,  56.79999924,
71.59999847,  58.40000153,  70.40000153,  41.20000076
])

Я должен вернуть название страны с наибольшей занятостью в указанных данных о занятости и занятость в этой стране.

Это мой код:

def max_employment(countries, employment):
    max_country = ?????     
    max_value = employment.max()   

    return (max_country, max_value)

Я застрял, вернув название страны с наибольшим номером занятости

np.argmax (занятость) предоставит вам индекс, а затем разделит страны, использующие его

NaN 01.05.2018 12:44
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
458
5

Ответы 5

Вы ищете np.argmax, который вернет индекс максимального значения:

>>> countries[employment.argmax()]
'Angola'

вы можете использовать метод argmax numpy. argmax возвращает индекс максимального элемента массива numpy.

def max_employment(countries, employment):
    max_country = countries.item(employment.argmax())     
    max_value = employment.max()   

    return (max_country, max_value)

Использование numpy.where позволяет учитывать повторяющиеся значения, то есть когда более чем одна страна разделяет максимальную занятость. В результате получится множество стран.

res = countries[np.where(employment == employment.max())]

Поскольку ваш числовой массив состоит из округленных процентов, это может иметь значение.

Голосующий не хочет комментировать? Это вероятный крайний случай.

jpp 02.05.2018 09:27

измените свою функцию max_employment на это:

def max_employment(countries, employment):
    max_value_index = np.argmax(employment)
    max_value = employment[max_value_index]
    max_country = countries[max_value_index]

    return (max_country, max_value)

Ты можешь написать:

def max_employment(countries, employment):
    max_value = employment.max()  
    max_country = countries[employment.tolist().index(max_value)]
    return (max_country, max_value)

Вы можете использовать .tolist() для возврата массива в виде списка.

Другие вопросы по теме