我有一个包含两列的数据框:一列包含类别,另一列包含 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/

10-12 16:59