我有两个numpy数组,第一个是values
,第二个是indexes
,我想做的是基于indexes
数组得到values
数组的平均值。
例如:
values = [1,2,3,4,5]
indexes = [0,0,1,1,2]
get_indexed_avg(values, indexes)
# should give me
# [1.5, 3.5, 5]
这里,indexes
数组中的值表示最终数组中的索引。
values
数组中的前两项将被平均,以形成最终数组中的零索引。values
数组中的第3项和第4项将被平均,以形成最终数组中的第一个索引。
1.最后,最后一项用于最终数组中的第二个索引。
我确实有一个python解决方案。但是那太可怕了,而且非常慢。有没有更好的解决方案?也许使用numpy?或者其他这样的库。
3条答案
按热度按时间6g8kf2rb1#
erhoui1w2#
我想避开Pandas,所以我花了不少时间来解决这个问题,方法是使用one-hot encoding。
创建一个索引的one-hot编码会给予我们一个二维数组,在我们想要的地方有1。
我们只需要为索引数组获取一个热元素,然后将其与值进行矩阵相乘,就可以得到我们想要的结果。
icnyk63a3#
最简单的解决方案: