Python DataFrame-groupby和质心计算
作者:互联网
我有一个包含两列的数据框:一列包含类别,另一列包含300维向量.对于“类别”列中的每个值,我都有很多300维向量.我需要的是按“类别”列对数据帧进行分组,并同时获取与每个类别有关的所有向量的质心值.
Category Vector
Balance [1,2,1,-5,....,9]
Inquiry [-5,3,1,5,...,10]
Card [-3,1,2,3,...1]
Balance [1,3,-2,1,-5,...,7]
Card [3,1,3,4,...,2]
因此,在上述情况下,所需的输出将是:
Category Vector
Balance [1,2.5,-0.5,-2,....,8]
Inquiry [-5,3,1,5,...,10]
Card [0,1,2.5,3.5,...,1.5]
我已经编写了以下函数,该函数获取向量数组并计算其质心:
import numpy as np
def get_intent_centroid(array):
centroid = np.zeros(len(array[0]))
for vector in array:
centroid = centroid + vector
return centroid/len(array)
所以我只需要一种快速的方法来在数据帧上应用上述功能以及groupby命令.
请原谅我对数据帧的格式化,但是我不知道如何正确格式化它们.
解决方法:
因此,向量列表的质心仅是向量每个维度的均值,因此可以对此进行简化.
df.groupby(‘Category’)[‘Vector’].apply(lambda x:np.mean(x.tolist(),axis = 0))
它应该比任何循环/列表转换方法都要快.
标签:dataframe,centroid,arrays,python 来源: https://codeday.me/bug/20191110/2014265.html