2016-04-14 25 views
-1

Ben başlığın olarak beni her line ile bir dizi verir Hangikarışık verilerle 2D dizi okumak

np.genfromtxt(neighbors_file, delimiter = '|', dtype=(int, int, '|S66'), usecols=(0, 1, 2)) 

olarak bu verileri okuyabilir bu

864 | 85 | '[150, 145, 110, 99, 95, -10] | .... 

benziyor bir dosyada veri var

d = array([(864, 85, '[150, 145, 110, 99, 95, -10]'), 
     (864, 92, '[160, 147, 97, -22]'), 
     (864, 94, '[186, 146, 144, 114, 106]'), ..., 
     (3376, 734, '[733, 532, 531, 528, 524, 521]'), 
     (3376, 735, '[742, 673, 611, 529, 514, 513]'), 
     (3376, 742, '[735, 611, 533, 514, -15, -16]')], 
     dtype=[('f0', '<i8'), ('f1', '<i8'), ('f2', 'S66')]) 

Şimdi u yerine endeksleme d[i] kullanarak hatları üzerinde yineleme zorunda İlk sütun için
d[:, 0] ve ikinci için d[:, 1] söyleyin.

Herhangi bir fikrin var mı?

+1

Beklenen çıktı nedir? –

+0

sütun adları kullanılarak yapılandırılmış dizilere erişirsiniz, örneğin >>> d ['f0'] # dizi ([864, 864, 864], dtype = int64) ... >>> d ['f1'] #array ([85, 92, 94], dtype = int64) >>> d ['f2'] # dizi ([b '[150, 145, 110, 99, 95, -10]', keskin ... b '[ 186, 146, 144, 114, 106] '], dtype =' | S66 ') >>> –

cevap

0
d = array([(864, 85, '[150, 145, 110, 99, 95, -10]'), 
     (864, 92, '[160, 147, 97, -22]'), 
     (864, 94, '[186, 146, 144, 114, 106]'), ..., 
     ...], 
     dtype=[('f0', '<i8'), ('f1', '<i8'), ('f2', 'S66')]) 

de daha fazla bilgi için dokümanlar kontrol yapılandırılmış dizidir. dtype=(int, int, '|S66') parametrenizden türetilen dtype bileşiğine dikkat edin.

2d dizisinin satırları ve sütunları yerine, bunun kayıtları ve alanları vardır. Ne genfromtxt getirileri üzerinden

d[0] # one record, same dtype 
d['f0'] # an array in ints, the first field 
d['f2'] # an array of strings, the 3rd field 
d[1]['f1'] # 92 
d['f1'][1] # same thing 

Karışıklık çok yaygındır; Bu yeterli değilse daha fazla cevap var. Teknik olarak her 'çizgi', bir tuple değil, bir bileşik dtype elemanı olan bir numpy.void'dur. Bir nd dizisinin bir boyutundan daha iyi ayırt etmek için, bir tuple olarak görüntülenir. Daha fazla bilgi için diğer son yanıtıma bakın: https://stackoverflow.com/a/36606421/901925