编程语言
首页 > 编程语言> > Python DataFrame-groupby和质心计算

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