Присвойте значение строке в массиве np, преобразуйте в int и вычислите средневзвешенное значение - PullRequest
0 голосов
/ 26 сентября 2018

Мне интересно, можете ли вы выяснить, как присвоить значение строке в np array и преобразовать в int, а затем рассчитать средневзвешенное значение.Например,

test_np = array(['HARD', 'HARD', 'EASY', 'MODERATE', 'MODERATE', 'EASY', 'MODERATE', 'MODERATE', 'EASY', 'MODERATE', 'MODERATE', 'HARD', 'EASY'])

, где 'HARD'=10, 'MODERATE'=5 и 'EASY'=1, поэтому результаты должны быть примерно такими, чтобы я мог вычислить средневзвешенное значение с помощью np.average()

test_np = array([10, 10, 1, 5, 5, 1, 5, 5, 1, 5, 5, 10, 1])

Большое спасибо заранее!

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Простой словарь с решением для понимания списка:

In [45]: test_np = np.array(['HARD', 'HARD', 'EASY', 'MODERATE', 'MODERATE', 'EA
    ...: SY', 'MODERATE', 'MODERATE', 'EASY', 'MODERATE', 'MODERATE', 'HARD', 'E
    ...: ASY'])
In [46]: 
In [46]: adict = {'HARD':10, 'MODERATE':5, 'EASY':1}
In [47]: np.array([adict[i] for i in test_np])
Out[47]: array([10, 10,  1,  5,  5,  1,  5,  5,  1,  5,  5, 10,  1])
0 голосов
/ 26 сентября 2018

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

Ввод:

df = pd.Series(test_np)
test_dict = { 'HARD':10, 'MODERATE':5,'EASY':1}
df = df.map(test_dict)
df.mean()

Выход для df:

0     10
1     10
2      1
3      5
4      5
5      1
6      5
7      5
8      1
9      5
10     5
11    10
12     1
dtype: int64

Выход для среднего:

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