将数据随机分配给Class Object中的集群

时间:2019-04-15 18:24:13

标签: python pandas numpy

我有以下代码:

import numpy as np

class EM(object):

    # Initialization
    def __init__(self, X, k=2):
       X = np.asarray(X)
       self.data = X.copy()
       # number of clusters
       self.k = k
       # randomly assign data to the clusters
       self.data['label'] = map(lambda x: x + 1, np.random.choice(self.k, len(self.data)))         # gives the error

其中X最初是形状为(19,182,5)的pd.Dataframe。运行代码会给我以下错误:

  

IndexError:只有整数,切片(:),省略号(...),numpy.newaxis(无)以及整数或布尔数组是有效索引

如何将新列写入self.data。这与在类外部添加/写入/处理数据对象有何不同?

1 个答案:

答案 0 :(得分:0)

self.data不再是数据帧,它是一个numpy数组。您可以看到这一点,因为您已经使用np.asarray将X转换为数组。发生IndexError是因为您无法像分配数据框一样分配给它。