Вернуть название страны с наибольшим номером занятости в Python - PullRequest
0 голосов
/ 01 мая 2018

Я работаю с 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)

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

Ответы [ 5 ]

0 голосов
/ 01 мая 2018

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

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

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

0 голосов
/ 01 мая 2018

измените функцию 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)
0 голосов
/ 01 мая 2018

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

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

    return (max_country, max_value)
0 голосов
/ 01 мая 2018

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

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

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

0 голосов
/ 01 мая 2018

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

>>> countries[employment.argmax()]
'Angola'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...