将mat文件转换为pandas数据帧问题
Convert mat file to pandas dataframe problem
你好,我一直在努力将 matlab 矩阵很好地转换为 pandas 数据帧。
我转换了它,但我有一行列表。这些列表列表通常是我的行。
import pandas as pd
import numpy as np
from scipy.io.matlab import mio
Data_mat = mio.loadmat('senet50-ferplus-logits.mat')
我的 Data_mat.keys()
给我这个输出:
dict_keys(['__header__', '__version__', '__globals__', 'images', 'wavLogits'])
我想将 images
和 wavLogits
转换为数据框。
通过查看此 我应用了解决方案。
cardio_df = pd.DataFrame(np.hstack((Data_mat['images'], Data_mat['wavLogits'])))
输出是
如何获取格式好的df?
[更新] Data_mat["images"]
有
array([[(array([[array(['A.J._Buckley/test/Y8hIVOBuels_0000001.wav'], dtype='<U41'),
array(['A.J._Buckley/test/Y8hIVOBuels_0000002.wav'], dtype='<U41'),
array(['A.J._Buckley/test/Y8hIVOBuels_0000003.wav'], dtype='<U41'),
...,
array(['Zulay_Henao/train/s4R4hvqrhFw_0000007.wav'], dtype='<U41'),
array(['Zulay_Henao/train/s4R4hvqrhFw_0000008.wav'], dtype='<U41'),
array(['Zulay_Henao/train/s4R4hvqrhFw_0000009.wav'], dtype='<U41')]],
dtype=object), array([[ 1, 2, 3, ..., 153484, 153485, 153486]], dtype=int32), array([[ 1, 1, 1, ..., 1251, 1251, 1251]], dtype=uint16), array([[array(['Y8hIVOBuels'], dtype='<U11'),
array(['Y8hIVOBuels'], dtype='<U11'),
array(['Y8hIVOBuels'], dtype='<U11'), ...,
array(['s4R4hvqrhFw'], dtype='<U11'),
array(['s4R4hvqrhFw'], dtype='<U11'),
array(['s4R4hvqrhFw'], dtype='<U11')]], dtype=object), array([[1, 2, 3, ..., 7, 8, 9]], dtype=uint8), array([[array(['A.J._Buckley/1.6/Y8hIVOBuels/1/01.jpg'], dtype='<U37')],
[array(['A.J._Buckley/1.6/Y8hIVOBuels/1/02.jpg'], dtype='<U37')],
[array(['A.J._Buckley/1.6/Y8hIVOBuels/1/03.jpg'], dtype='<U37')],
...,
[array(['Zulay_Henao/1.6/s4R4hvqrhFw/9/16.jpg'], dtype='<U36')],
[array(['Zulay_Henao/1.6/s4R4hvqrhFw/9/17.jpg'], dtype='<U36')],
[array(['Zulay_Henao/1.6/s4R4hvqrhFw/9/18.jpg'], dtype='<U36')]],
dtype=object), array([[1.00000e+00],
[1.00000e+00],
[1.00000e+00],
...,
[1.53486e+05],
[1.53486e+05],
[1.53486e+05]], dtype=float32), array([[3, 3, 3, ..., 1, 1, 1]], dtype=uint8))]],
dtype=[('name', 'O'), ('id', 'O'), ('sp', 'O'), ('video', 'O'), ('track', 'O'), ('denseFrames', 'O'), ('denseFramesWavIds', 'O'), ('set', 'O')])
这就是我将 mat 文件自动转换为 pandas 数据帧的方法。
mat = scipy.io.loadmat('file.mat')
mat = {k:v for k, v in mat.items() if k[0] != '_'}
df = pd.DataFrame({k: np.array(v).flatten() for k, v in mat.items()})
你好,我一直在努力将 matlab 矩阵很好地转换为 pandas 数据帧。 我转换了它,但我有一行列表。这些列表列表通常是我的行。
import pandas as pd
import numpy as np
from scipy.io.matlab import mio
Data_mat = mio.loadmat('senet50-ferplus-logits.mat')
我的 Data_mat.keys()
给我这个输出:
dict_keys(['__header__', '__version__', '__globals__', 'images', 'wavLogits'])
我想将 images
和 wavLogits
转换为数据框。
通过查看此
cardio_df = pd.DataFrame(np.hstack((Data_mat['images'], Data_mat['wavLogits'])))
输出是
如何获取格式好的df?
[更新] Data_mat["images"]
有
array([[(array([[array(['A.J._Buckley/test/Y8hIVOBuels_0000001.wav'], dtype='<U41'),
array(['A.J._Buckley/test/Y8hIVOBuels_0000002.wav'], dtype='<U41'),
array(['A.J._Buckley/test/Y8hIVOBuels_0000003.wav'], dtype='<U41'),
...,
array(['Zulay_Henao/train/s4R4hvqrhFw_0000007.wav'], dtype='<U41'),
array(['Zulay_Henao/train/s4R4hvqrhFw_0000008.wav'], dtype='<U41'),
array(['Zulay_Henao/train/s4R4hvqrhFw_0000009.wav'], dtype='<U41')]],
dtype=object), array([[ 1, 2, 3, ..., 153484, 153485, 153486]], dtype=int32), array([[ 1, 1, 1, ..., 1251, 1251, 1251]], dtype=uint16), array([[array(['Y8hIVOBuels'], dtype='<U11'),
array(['Y8hIVOBuels'], dtype='<U11'),
array(['Y8hIVOBuels'], dtype='<U11'), ...,
array(['s4R4hvqrhFw'], dtype='<U11'),
array(['s4R4hvqrhFw'], dtype='<U11'),
array(['s4R4hvqrhFw'], dtype='<U11')]], dtype=object), array([[1, 2, 3, ..., 7, 8, 9]], dtype=uint8), array([[array(['A.J._Buckley/1.6/Y8hIVOBuels/1/01.jpg'], dtype='<U37')],
[array(['A.J._Buckley/1.6/Y8hIVOBuels/1/02.jpg'], dtype='<U37')],
[array(['A.J._Buckley/1.6/Y8hIVOBuels/1/03.jpg'], dtype='<U37')],
...,
[array(['Zulay_Henao/1.6/s4R4hvqrhFw/9/16.jpg'], dtype='<U36')],
[array(['Zulay_Henao/1.6/s4R4hvqrhFw/9/17.jpg'], dtype='<U36')],
[array(['Zulay_Henao/1.6/s4R4hvqrhFw/9/18.jpg'], dtype='<U36')]],
dtype=object), array([[1.00000e+00],
[1.00000e+00],
[1.00000e+00],
...,
[1.53486e+05],
[1.53486e+05],
[1.53486e+05]], dtype=float32), array([[3, 3, 3, ..., 1, 1, 1]], dtype=uint8))]],
dtype=[('name', 'O'), ('id', 'O'), ('sp', 'O'), ('video', 'O'), ('track', 'O'), ('denseFrames', 'O'), ('denseFramesWavIds', 'O'), ('set', 'O')])
这就是我将 mat 文件自动转换为 pandas 数据帧的方法。
mat = scipy.io.loadmat('file.mat')
mat = {k:v for k, v in mat.items() if k[0] != '_'}
df = pd.DataFrame({k: np.array(v).flatten() for k, v in mat.items()})