Используя версию ширины поля delimiter
Я могу загрузить первые две группы чисел, используя genfromtxt
(txt
- многострочная вставка образца файла):
In [221]: dels = [2,3,3, 3,3,3]; cols=[0,1,2,3,4,5]
In [222]: np.genfromtxt(txt.splitlines(), delimiter=dels, usecols=cols, dtype=float)
Out[222]:
array([[ 24., 238., 8., 27., 237., 8.],
[ 39., 79., 6., 39., 80., 6.],
[ 39., 88., 8., 39., 89., 8.],
[ 39., 97., 10., 39., 98., 10.],
[ 39., 104., 12., 39., 105., 12.],
[ 40., 80., 9., 40., 81., 10.],
[ 40., 107., 9., 40., 108., 9.],
[ 41., 79., 8., 41., 80., 8.]])
Мне пришлось использовать dtype
float из-за '8'. поле. Я полагаю, я мог бы сократить поле и пропустить '.' вместо этого.
Или, если я укажу тип None
, он создаст структурированный массив со смесью целочисленных и плавающих полей dtype.
In [223]: np.genfromtxt(txt.splitlines(), delimiter=dels, usecols=cols, dtype=None)
Out[223]:
array([(24, 238, 8., 27, 237, 8.), (39, 79, 6., 39, 80, 6.),
(39, 88, 8., 39, 89, 8.), (39, 97, 10., 39, 98, 10.),
(39, 104, 12., 39, 105, 12.), (40, 80, 9., 40, 81, 10.),
(40, 107, 9., 40, 108, 9.), (41, 79, 8., 41, 80, 8.)],
dtype=[('f0', '<i8'), ('f1', '<i8'), ('f2', '<f8'), ('f3', '<i8'), ('f4', '<i8'), ('f5', '<f8')])
dels
и cols
могут быть расширены для обработки всех 7 групп.
Как только у вас появятся такие числа, их будет легко сопоставить с вашим окончательным массивом координат. Но я полагаю, у вас это уже получилось.
===
Разделение на '.' в свою собственную, неиспользуемую колонку:
In [226]: dels = [2,3,2,1, 3,3,2,1]; cols=[0,1,2, 4,5,6]
In [227]: np.genfromtxt(txt.splitlines(), delimiter=dels, usecols=cols, dtype=int)
Out[227]:
array([[ 24, 238, 8, 27, 237, 8],
[ 39, 79, 6, 39, 80, 6],
[ 39, 88, 8, 39, 89, 8],
[ 39, 97, 10, 39, 98, 10],
[ 39, 104, 12, 39, 105, 12],
[ 40, 80, 9, 40, 81, 10],
[ 40, 107, 9, 40, 108, 9],
[ 41, 79, 8, 41, 80, 8]])