почему я использую scipy.io.savemat для получения строки и столбца, но не двух столбцов - PullRequest
0 голосов
/ 12 ноября 2018

Я получаю две данные и хочу сделать их как файл .mat, поэтому я использовал модули scipy.io и scipy.io.savemat, но когда я открываю файл, я получаю следующее: введите описание изображения здесь

Я хочу получить два столбца как 950x1, а не 1x950

, это код:

import scipy.io as sio

x = Ramanshift1[64:1014]
Hem_I_Nor = pd.Normalization(y3_arpls)
sio.savemat(Hem_path+'/matdata.mat',{'ramanshift':x,'ramanspectra':Hem_I_Nor})

x происходит из столбца, а Hem_I_Nor происходит от панд и всехэто может быть сохранено в .csv и двух столбцах

1 Ответ

0 голосов
/ 12 ноября 2018

В сеансе numy:

In [25]: from scipy.io import savemat
In [26]: savemat('test.mat', {'x':np.ones((3,),int), 'y': np.ones((3,1),int), 'z
    ...: ': np.ones((1,3),int)})

В октавном сеансе после load:

>> size(x),size(y),size(z)
ans =
   1   3

ans =
   3   1

ans =
   1   3

Это массив 1d, который состоит из (1, n) матрицы:

x =
  1  1  1

С 2d массивами смотрите order. MATLAB использует F. Так

In [31]: np.arange(12).reshape(3,4,order='F')
Out[31]: 
array([[ 0,  3,  6,  9],
       [ 1,  4,  7, 10],
       [ 2,  5,  8, 11]])

сохраняет как

>> w
w = 
   0   3   6   9
   1   4   7  10
   2   5   8  11

Из-за внутренних различий в порядках массивов / матриц передача значений от одного к другому может привести к путанице. Действия savemat/loadmat не обязательно помогают.

Глядя на документы, есть также параметр oned_as, который определяет, будут ли массивы (n,) сохранены как (n, 1) или (1, n).

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