Случайное назначение данных кластерам внутри объекта класса

#python #pandas #numpy

#python #панды #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 изначально является a pd.Dataframe с формой (19 182,5). Запуск кода выдает следующую ошибку:

Ошибка индекса: допустимыми индексами являются только целые числа, срезы (:), многоточие (…), numpy.newaxis (нет) и целочисленные или логические массивы

Как я могу записать новый столбец в self.data . Чем это отличается от добавления / записи / работы с объектом данных вне класса?

Ответ №1:

self.data это больше НЕ dataframe, это массив numpy. Вы можете видеть это, поскольку вы привели X в массив с np.asarray помощью . Ошибка IndexError возникает, поскольку вы не можете назначить ему, как вы бы назначили dataframe.