| 
 | 
 
 本帖最后由 matlab的旋律 于 2020-11-20 07:33 编辑  
 
对像我这种经常使用matlab和python交叉仿真的工程师,需要经常在matlab和python的数据格式进行切换,下面介绍一种读取读取.mat文件保存为.npz,用于tensorflow2.0以上版本深度学习模型的数据转换程序。第一步,首先导入库 
 
- import numpy as np
 
 - import scipy.io as sio
 
 - import tensorflow as tf
 
 - from sklearn.preprocessing import MinMaxScaler, Normalizer
 
  复制代码 第二步,读取.mat文件并且转为tensorflow2.0以上版本深度学习模型的输入格式的子函数 
 
- def load_matfile(filename, num_classes=2):
 
 -     mat_contents = sio.loadmat(filename)#读取mat文件
 
 -     tx_data = np.array(mat_contents['data'])
 
  
-     scaler = Normalizer()
 
 -     scaler.fit(tx_data)
 
 -     tx_data = scaler.transform(tx_data)  # 归一化
 
  
-     tx_data = tx_data.swapaxes(0, 1)#交换0 1轴
 
 -     tx_data = np.expand_dims(tx_data, axis=1)#插入一个轴
 
 -     tx_label = np.array(mat_contents['label'])
 
 -     tx_label = np.squeeze(tx_label, 1)
 
 -     tx_data = tx_data.swapaxes(1, 2)
 
 -     index = np.arange(tx_label.shape[0])
 
 -     np.random.shuffle(index)#随机打乱顺序
 
 -     tx_data = tx_data[index, :, :]
 
 -     tx_label = tx_label[index]
 
 -     tx_label = tf.keras.utils.to_categorical(tx_label - 1, num_classes) #转换成类格式
 
 -     return tx_data, tx_label
 
  复制代码 第三步,保存为.npz格式 
- if __name__ == "__main__":
 
 -     num_classes = 2
 
 -     tx_data, tx_label = load_matfile(r'xdata.mat', num_classes)
 
  
-     train_len = int(0.7 * len(tx_label))#训练集比例
 
 -     x_train = tx_data[0:train_len, :, :]
 
 -     y_train = tx_label[0:train_len]
 
 -     x_test = tx_data[train_len:, :, :]#做测试值
 
 -     y_test = tx_label[train_len:]
 
  
-     np.savez('data', x_train=x_train, y_train=y_train, x_test=x_test, y_test=y_test)#保存为.npz格式
 
 
  复制代码 保存为data.npz文件,后续的处理就可以完全脱离matlab了 
 
 |   
 
 
 
 |