Python "Too many indices for array"

8

我正在使用pandas在python中读取文件,然后将其保存在numpy数组中。 该文件的维度为11303402行x 10列。 我需要将数据拆分用于交叉验证,为此,我将数据切片成了11303402行x 9列的示例和1个11303402行x 1列标签的数组。 以下是代码:

tdata=pd.read_csv('train.csv')
tdata.columns='Arrival_Time','Creation_Time','x','y','z','User','Model','Device','sensor','gt']

User_Data = np.array(tdata)
features = User_Data[:,0:9]
labels = User_Data[:,9:10]

错误出现在以下代码中:
classes=np.unique(labels)
idx=labels==classes[0]
Yt=labels[idx]
Xt=features[idx,:]

在线上:
Xt=features[idx,:]

它表示“数组索引过多”

所有三个数据集的形状为:

print np.shape(tdata) = (11303402, 10)
print np.shape(features) = (11303402, 9)
print np.shape(labels) = (11303402, 1)

如果有人知道这个问题,请帮忙解决。


1
c是什么?一个完整的、独立的、可运行的程序,带有自动生成的随机(或零)输入数据,将会很有帮助。 - John Zwinck
1
尝试移除分号,这样你就会得到 Xt=features[idx:] - kazbeel
idx的形状是什么? - John Zwinck
@JohnZwinck 抱歉,我更新了代码。这只是意味着classes中的第一个类和idx的形状为(11303402,1)。 @WoozyCoder 不行,没有起作用。 - Farhan Javed
这个回答解决了你的问题吗?IndexError: too many indices for array - AMC
1个回答

11

问题是idx的形状为(11303402,1),因为逻辑比较返回一个与labels形状相同的数组。这两个维度使用了features中的所有索引。快速解决方法是

Xt=features[idx[:,0],:]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接