我在一个看起来像这样的文件中有数据
864 | 85 | '[150, 145, 110, 99, 95, -10] | ....
我可以将这些数据读取为
np.genfromtxt(neighbors_file, delimiter = '|', dtype=(int, int, '|S66'), usecols=(0, 1, 2))
这给了我一个line
作为元组的数组
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')])
现在,我必须使用索引d[i]
而不是
d[:, 0]
第一列和d[:, 1]
第二列来遍历各行。
任何想法?
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')])
是一个结构化数组。注意dtype
从您的dtype=(int, int, '|S66')
参数派生的compound 。
它具有记录和字段,而不是二维数组的行和列。
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
关于genfromtxt
回报的困惑是很常见的。如果还不够,还有更多答案。
从技术上讲,每条“线”都不是元组,而是numpy.void
一个复合dtype元素。它显示为元组,以便更好地将其与nd数组的维区分开。请参阅我最近的其他答案以获取更多详细信息:https : //stackoverflow.com/a/36606421/901925
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句