#python #arrays #matlab #numpy
#python #массивы #matlab #numpy
Вопрос:
Я новичок в Python и пытаюсь записать массив numpy в формат, читаемый в Matlab, в следующем формате в массив [xi, yi, ti], разделенный точкой с запятой.
В Python я могу в настоящее время записать его в следующей форме, которая представляет собой массив numpy, напечатанный на экране / записанный в файл как [[xi yi ti]].
Вот код:
import math
import random
import numpy as np
SPOT = []
f = open('data_dump.txt', 'a')
for i in range(10):
X = random.randrange(6)
Y = random.randrange(10)
T = random.randrange(5)
SPOT.append([X,Y,T])
SPOT = np.array(SPOT)
f.write(str(SPOT[:]))
f.close()
Пожалуйста, подскажите, как мне следует поступить, чтобы иметь возможность записывать эти данные в формат, читаемый Matlab, как указано выше. Заранее спасибо!
Sree.
Комментарии:
1. Пожалуйста, отредактируйте свой вопрос, добавив к нему этот код. С этим ничего нельзя сделать в качестве комментария
2. Что означают первые несколько строк data_dump.txt как выглядит? Вероятно, вы можете прочитать это в Matlab как есть.
Ответ №1:
Не очень обязательно записывать ваш array
в специальный формат. Запишите его в обычный csv
и используйте dlmread
, чтобы открыть его в matlab
.
На numpy
стороне напишите свой array
, используя np.savetxt('some_name.txt', aar, delimiter=' ')
Комментарии:
1. Спасибо всем! @CT Zhu: Я попытался использовать np.savetxt сейчас, и, кажется, это работает! Добавлено следующее, и оно записывается в формат, который читается в Matlab непосредственно как массив. Еще раз спасибо! np.savetxt(‘test.txt ‘, SPOT, fmt = ‘.5f’, разделитель=’,’, новая строка = ‘;n’, заголовок=’данные = […’, нижний колонтитул=’]’, комментарии = ‘#’)
Ответ №2:
Попробуйте scipy.io
экспортировать данные для Matlab
import scipy.io as sio
matlab_data = dict(SPOT=SPOT)
sio.savemat('data_dump.mat', matlab_data)
data_dump.mat
это Matlab
данные. Для получения более подробной информации см.http://docs.scipy.org/doc/scipy/reference/tutorial/io.html
Ответ №3:
Если у вас есть scipy, чем вы можете сделать:
import scipy.io
scipy.io.savemat('/tmp/test.mat', dict(SPOT=SPOT))
И в matlab:
a=load('/tmp/test.mat');
a.SPOT % should have your data
Ответ №4:
Спасибо всем и спасибо @CT Zhu за то, что дали мне знать!
Поскольку я не использую Scipy, я попробовал использовать np.savetxt, и, кажется, это работает! Добавлено следующее, и оно записывается в формат, который читается в Matlab непосредственно как массив. Еще раз спасибо!
np.savetxt('test.txt', SPOT, fmt = '.5f', delimiter=',', newline = ';n', header='data =[...', footer=']', comments = '#')
Ваше здоровье!
Sree.