在python中匯入本地.mat資料檔案時,總是無法得到正確的資料。
問題程式碼如下:
from numpy import *
import scipy.io
mnist_train = `D:Machine LearningTensorFlowSoftmax Regressionmnist_datasetmnist_train.mat`
mnist_train_labels = `D:Machine LearningTensorFlowSoftmax Regressionmnist_datasetmnist_train_labels.mat`
x = scipy.io.loadmat(mnist_train)
label = scipy.io.loadmat(mnist_train_labels)
print(x.shape)
上段程式碼輸出的結果是(1,1),而對應的資料應是(60000,784)。此時,如果直接輸出x,會看到以下結果:
```
[[ {`__version__`: `1.0`, `__header__`: b`MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Tue Nov 29 12:43:31 2011`,
`mnist_train`: array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]], dtype=float32), `__globals__`: []}]]
```
可見,如果本地mat檔案包含了額外的資訊,則單純使用scipy.io.loadmat()無法直接讀取到所需資料,還應該補充一行對應的程式碼。
x = scipy.io.loadmat(mnist_train)
train_x = x[`mnist_train`]
label = scipy.io.loadmat(mnist_train_labels)
train_label = label[`mnist_train_labels`]