Мы можем загрузить файл с помощью genfromtxt
несколькими способами:
In [10]: txt = """a, 1.1, 2.2, 3.3, 4.4
...: b, 5.5, 6.6, 7.7, 8.8""".splitlines()
In [11]: data = np.genfromtxt(txt, delimiter=',', dtype=None, encoding=None)
In [12]: data
Out[12]:
array([('a', 1.1, 2.2, 3.3, 4.4), ('b', 5.5, 6.6, 7.7, 8.8)],
dtype=[('f0', '<U1'), ('f1', '<f8'), ('f2', '<f8'), ('f3', '<f8'), ('f4', '<f8')])
In [13]: data['f0']
Out[13]: array(['a', 'b'], dtype='<U1')
In [14]: data['f1']
Out[14]: array([1.1, 5.5])
Это помещает каждый столбец в отдельное поле.
Но для ваших целей мы могли бы уточнить dtype -используя поле из 4 столбцов:
In [15]: data = np.genfromtxt(txt, delimiter=',', dtype=[('key','U2'),('data',float,4)], encoding=None)
In [16]: data
Out[16]:
array([('a', [1.1, 2.2, 3.3, 4.4]), ('b', [5.5, 6.6, 7.7, 8.8])],
dtype=[('key', '<U2'), ('data', '<f8', (4,))])
In [17]: data['key']
Out[17]: array(['a', 'b'], dtype='<U2')
In [18]: data['data']
Out[18]:
array([[1.1, 2.2, 3.3, 4.4],
[5.5, 6.6, 7.7, 8.8]])
Отсюда до словаря легко:
In [19]: dd = {k:d for k,d in zip(data['key'], data['data'])}
In [20]: dd
Out[20]: {'a': array([1.1, 2.2, 3.3, 4.4]), 'b': array([5.5, 6.6, 7.7, 8.8])}