我有以下代码:
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
。这与在类外部添加/写入/处理数据对象有何不同?
答案 0 :(得分:0)
self.data
不再是数据帧,它是一个numpy数组。您可以看到这一点,因为您已经使用np.asarray
将X转换为数组。发生IndexError是因为您无法像分配数据框一样分配给它。