我有一个包含两列的数据框:一列包含类别,另一列包含 300 维向量。对于 Category 列中的每个值,我有很多 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))
它应该比任何循环/列表转换方法都快。
关于Python DataFrame - groupby 和质心计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47830763/