使用另一个向量中的分组值进行平均(numpy/Python)

使用另一个向量中的分组值进行平均(numpy/Python),python,numpy,Python,Numpy,我想根据另一个向量中的分组信息取一个向量的平均值。这两个向量的长度相同。我在下面创建了一个基于每个用户平均预测的最小示例。在努比我该怎么做 >>> pred [ 0.99 0.23 0.11 0.64 0.45 0.55 0.76 0.72 0.97 ] >>> users ['User2' 'User3' 'User2' 'User3' 'User0' 'User1' '

我想根据另一个向量中的分组信息取一个向量的平均值。这两个向量的长度相同。我在下面创建了一个基于每个用户平均预测的最小示例。在努比我该怎么做

       >>> pred
           [ 0.99  0.23  0.11  0.64  0.45  0.55 0.76  0.72  0.97 ] 
       >>> users
           ['User2' 'User3' 'User2' 'User3' 'User0' 'User1' 'User4' 'User4' 'User4']

如果要坚持使用numpy,最简单的方法是使用和:


如果要坚持使用numpy,最简单的方法是使用和:


“纯numpy”解决方案可能使用np.unique和np.bincount的组合:

如果已安装,则DataFrames具有:


“纯numpy”解决方案可能使用np.unique和np.bincount的组合:

如果已安装,则DataFrames具有:


一个紧凑的解决方案是使用免责声明:我是它的作者,它实现了一个类似于Jaime提出的矢量化解决方案的解决方案;但有了更干净的界面和更多的测试:

import numpy_indexed as npi
npi.group_by(users).mean(pred)

一个紧凑的解决方案是使用免责声明:我是它的作者,它实现了一个类似于Jaime提出的矢量化解决方案的解决方案;但有了更干净的界面和更多的测试:

import numpy_indexed as npi
npi.group_by(users).mean(pred)

您的两个数组长度不同。。。另外,您是在寻找NumPy中的解决方案,还是在熊猫中寻找更简单的解决方案?很抱歉,它们现在的长度相同。我更愿意留在NumPy,因为我只是在学习Python,并决定将Pandas推迟一段时间。您的两个数组的长度不同。。。另外,您是在寻找NumPy中的解决方案,还是在熊猫中寻找更简单的解决方案?很抱歉,它们现在的长度相同。我更愿意留在NumPy,因为我刚刚学习Python,决定将Pandas推迟一段时间。我真的不明白每个用户的唯一标签是什么意思-在您的示例中,User2的相应标签值似乎为0和1。另外,在上,你应该单独发布后续问题。你可以添加到原始问题的链接,以提供上下文。好的,我会这样做。谢谢。我真的不明白您所说的每个用户的唯一标签是什么意思-在您的示例中,似乎User2的相应标签值为0和1。另外,在上,你应该单独发布后续问题。你可以添加到原始问题的链接,以提供上下文。好的,我会这样做。谢谢
import pandas as pd

df = pd.DataFrame({'name':users, 'pred':pred})

print(df.groupby('name').mean())
#            pred
# name           
# User0  0.450000
# User1  0.550000
# User2  0.550000
# User3  0.435000
# User4  0.816667
import numpy_indexed as npi
npi.group_by(users).mean(pred)