Имитируемый файл:
In [243]: txt = """CODE, AIRPORT
...: HOU, Houston
...: ABQ, Alberquerque
...: BWI, Baltimore"""
для чтения без использования заголовков:
In [244]: data = np.genfromtxt(txt.splitlines(), delimiter=',', dtype=str, skip_header=1,
...: encoding=True)
In [245]: data
Out[245]:
array([['HOU', ' Houston'],
['ABQ', ' Alberquerque'],
['BWI', ' Baltimore']], dtype='<U13')
В результате получается 2d-массив со строкой dtype.
Использованиеheader и dtype = None:
In [246]: data = np.genfromtxt(txt.splitlines(), delimiter=',', dtype=None, names=True, en
...: coding=True)
In [247]: data
Out[247]:
array([('HOU', ' Houston'), ('ABQ', ' Alberquerque'),
('BWI', ' Baltimore')],
dtype=[('CODE', '<U3'), ('AIRPORT', '<U13')])
In [248]: data.shape
Out[248]: (3,)
In [249]: data['CODE']
Out[249]: array(['HOU', 'ABQ', 'BWI'], dtype='<U3')
Результатом является структурированный массив - 1d с 2 полями, доступ к которым осуществляется по имени.
С str
dtype он также структурирован, но dtype - это 'U', строка из 0 байтов, поэтому отображается пустая строка:
In [250]: data = np.genfromtxt(txt.splitlines(), delimiter=',', dtype=str, names=True, enc
...: oding=True)
In [251]: data
Out[251]:
array([('', ''), ('', ''), ('', '')],
dtype={'names':['CODE','AIRPORT'], 'formats':['<U','<U'], 'offsets':[0,0], 'itemsize':2})
Обычная print
опускает dtype с возможной путаницей:
In [252]: print(data)
[('', '') ('', '') ('', '')]