Я думаю, что преобразовать это в структуру списка будет проще всего.
Я добавил ,
к следующему:
In [22]: astr=""" {
...: {-9,{{4,2},{5,6},{8,10}}},
...: {-2,{{3,6},{6,1}}},
...: {4,{{3,6},{6,1},{3,6},{6,1},{3,6},{6,1},{3,6},{6,1}}}
...: }"""
In [23]: astr1=astr.replace('{','[').replace('}',']').replace('\n','')
In [24]: astr1
Out[24]: ' [ [-9,[[4,2],[5,6],[8,10]]], [-2,[[3,6],[6,1]]], [4,[[3,6],[6,1],[3,6],[6,1],[3,6],[6,1],[3,6],[6,1]]] ]'
Различные строковые оценщики. eval
всегда в наличии. ast
немного безопаснее. json.loads(astr1)
тоже работает.
In [25]: alist= eval(astr1)
In [26]: alist
Out[26]:
[[-9, [[4, 2], [5, 6], [8, 10]]],
[-2, [[3, 6], [6, 1]]],
[4, [[3, 6], [6, 1], [3, 6], [6, 1], [3, 6], [6, 1], [3, 6], [6, 1]]]]
Если это должен быть массив, выполните:
In [27]: arr = np.array(alist)
In [28]: arr
Out[28]:
array([[-9, list([[4, 2], [5, 6], [8, 10]])],
[-2, list([[3, 6], [6, 1]])],
[4,
list([[3, 6], [6, 1], [3, 6], [6, 1], [3, 6], [6, 1], [3, 6], [6, 1]])]],
dtype=object)
Это (3,2). arr[:,0]
- это массив целых чисел, но arr[:,1]
- это массив списков.
genfromtxt
по умолчанию пытается преобразовать ввод в число с плавающей запятой (то, что он может преобразовать, становится nan
). Он предназначен для csv
- аккуратной таблицы номеров строк с одинаковым количеством столбцов для каждой строки.