Без разрывов строк это совсем не "красиво".
Я думаю, что самый быстрый способ - использовать поиск / замену регулярных выражений, чтобы добавить ,
между разделенными пробелами цифрами и между][
. это, однако, не будет очень умным и сломается в угловых случаях (например, числа, оканчивающиеся на .
), поэтому вам, возможно, придется настроить идею:
Теперь, попробовав это здесь, старыйвысказывание еще раз подтверждает правильность: «если у вас есть одна проблема, требующая регулярных выражений, у вас есть две проблемы» (неизвестный автор).
Проблема в том, что некоторые числа состоят из одной цифры, когда это число совпадает с запятой для числа перед ним, механизм регулярных выражений не может сопоставить его до числа после it.
Итак, нам нужно идтипосле «просмотра матчей вперед» и «просмотра матчей» с использованием синтаксиса (?=...)
, который позволяет сопоставить только то место, куда мы хотим добавить «,».
после этого у вас есть строка, гдеВы можете использовать "eval", чтобы иметь структуру вложенного списка, которая может быть передана непосредственно в numpy.array
.
import numpy as np
import re
from ast import literal_eval
b = re.sub(r"((?<=\d)\s+(?=\d)|(?<=\])\s*?(?=\[))", ", " , a)
c = np.array(literal_eval(b))
Конечно, если у вас всегда есть один пробел между числами и без пробелов или разрывов между "] [", простая замена строки без регулярных выражений будет намного проще. Используйте регулярные выражения, если у вас есть свободные пробелы во входных данных.