import numpy as np
import pandas as pd
dummies = np.array(pd.get_dummies(list('abdccadab'))) #categorical IV
groupIDs = np.array([10,10,10,10,20,20,30,30,30]) #groups(/strata)
_,idx,tags = np.unique(groupIDs, return_index=1, return_inverse=1)
我知道我们可以对每一组,每一列做加法、乘法等
^{pr2}$但是有没有办法计算这些垃圾箱的平均值呢?在
np.mean.reduceat
和{
AttributeError: 'function' object has no attribute 'reduceat'
numpy_indexed包(免责声明:我是其作者)以单行语句的形式提供了此类功能:
对于这种情况(已经排序的键),它提供了线性和矢量化的性能;尽管它比Divakar发布的专门解决方案有更多的额外开销,Divakar已经加入了这一假设。但这可能是一个更好的选择,这取决于您如何衡量可维护性、自我文档性和通用性。在
使用
np.add.reduceat
根据间隔移位idx
得到数据数组dummies
的每列求和,然后除以用np.bincount
-另一种计算区间长度的方法是直接使用
^{pr2}$idx
-同样,我们可以避免使用
^{3}$np.unique
来得到idx
,如下-相关问题 更多 >
编程相关推荐