【发布时间】:2018-05-29 13:41:39
【问题描述】:
我有一个包含两列的数据框:一列包含类别,另一列包含 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 命令。
请原谅我对数据框的格式设置,但我不知道如何正确格式化它们。
【问题讨论】:
-
不确定如何在 pandas 中对列中的向量进行操作,但您可以尝试将这两列更改为列表,然后进行操作并转换回 pandas!
-
我认为如果不使用列表,整个计算过程会快得多。
-
@Tarun 你会如何使用列表来处理它?
-
我已经发布了答案。如果你在 pandas 中找不到方法,你可以这样做
标签: python arrays dataframe centroid