Конвертировать строку в двумерный массив numpy - PullRequest
1 голос
/ 01 апреля 2020

У меня есть строка, которая загружается из файла .mat и имеет следующий формат:

(array([172.169, 73.2]), array([128.83, 102.31]), array([143.49, 124.43]), array([186.83, 95.69]), 'R', array([], dtype=float64))

Можно ли как-то преобразовать ее непосредственно в массив numpy 2D без разбора всю строку и удаление «массивов» вручную? Здесь не будут работать ни numpy.fromstring, ни numpy.frombuffer.

1 Ответ

2 голосов
/ 01 апреля 2020

вы можете использовать np.fromstring с регулярным выражением:

import re

# s is your string
np.fromstring(', '.join(re.findall(r'\[(.+?)\]', s)), sep =', ').reshape((2, 2, 2))

вывод:

array([[[172.169,  73.2  ],
        [128.83 , 102.31 ]],

       [[143.49 , 124.43 ],
        [186.83 ,  95.69 ]]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...