Вот несколько вариантов, хотя ни один из них не встроен.
Решение, которое вы, вероятно, не найдете приемлемым
Это решение, вероятно, относится к вашей категории "быстрых и грязных", но онопомогает привести к следующему решению.
Удалите values = [
, последнюю строку (];
) и глобально замените все ;
ничем, чтобы получить:
-24.92 -23.66 -22.55
-24.77 -23.56 -22.45
-24.54 -23.64 -22.56
Затем вы можете использовать loadtxt
numpy следующим образом.
>>> import numpy as np
>>> A = np.loadtxt('data.m')
>>> A
array([[-24.92, -23.66, -22.55],
[-24.77, -23.56, -22.45],
[-24.54, -23.64, -22.56]])
Решение, которое вы можете найти приемлемым
. В этом решении мы создаем метод для приведения входных данных в форму, которая numpyloadtxt
лайков (на самом деле в той же форме, что и выше).
import StringIO
import numpy as np
def convert_m(fname):
with open(fname, 'r') as fin:
arrstr = fin.read()
arrstr = arrstr.split('[', 1)[-1] # remove the content up to the first '['
arrstr = arrstr.rsplit(']', 1)[0] # remove the content after ']'
arrstr = arrstr.replace(';', '\n') # replace ';' with newline
return StringIO.StringIO(arrstr)
Теперь, когда у нас это есть, сделайте следующее.
>>> np.loadtxt(convert_m('data.m'))
array([[-24.92, -23.66, -22.55],
[-24.77, -23.56, -22.45],
[-24.54, -23.64, -22.56]])