我想知道是否可以找出如何为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])
非常感谢!
答案 0 :(得分:0)
您可以将test_np转换为pandas系列,并使用map将字符串转换为整数。然后,您可以取该系列的平均值
输入:
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
答案 1 :(得分:0)
带有列表理解解决方案的简单字典:
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])