Python „Prea mulți indici pentru array” (Programare, Python, Numpy)

Farhan Javed a intrebat.

Citesc un fișier în python folosind pandas și apoi îl salvez într-o matrice numpy. Fișierul are dimensiunea de 11303402 rânduri x 10 coloane. Am nevoie să împart datele pentru validarea încrucișată și pentru asta am împărțit datele în 11303402 rânduri x 9 coloane de exemple și 1 array de 11303402 rânduri x 1 col de etichete.următorul este codul:

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]

Eroarea apare în următorul cod:

classes=np.unique(labels)
idx=labels==classes[0]
Yt=labels[idx]
Xt=features[idx,:]

Pe linia:

Xt=features[idx,:]

se spune „prea mulți indici pentru matrice”.

Formele tuturor celor 3 seturi de date sunt:

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

Dacă cineva știe care este problema, vă rog să mă ajutați.

Comentarii

  • Ce este c? Un program complet, independent, executabil, cu date de intrare aleatoare (sau zero) generate de sine stătător, ar fi de ajutor. –  > Por John Zwinck.
  • Încercați să eliminați punctul și virgula, astfel încât să aveți Xt=features[idx:]. –  > Por kazbeel.
  • Și care este forma lui idx? –  > Por John Zwinck.
  • @JohnZwinck Îmi pare rău că am actualizat codul. Înseamnă doar prima clasă din clase și forma de idx este (11303402,1) @WoozyCoder Nopes, nu a funcționat. –  > Por Farhan Javed.
  • Răspunde acest lucru la întrebarea dumneavoastră? IndexError: prea mulți indici pentru matrice –  > Por AMC.
1 răspunsuri
Keith Prussing

Problema este idx are forma (11303402,1) deoarece comparația logică returnează o matrice de aceeași formă ca și labels. Aceste două dimensiuni utilizează toți indicii din features. Soluția rapidă este

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