1. 程式人生 > >關於在Python中利用scipy讀取mat檔案的問題

關於在Python中利用scipy讀取mat檔案的問題

事情是這樣的,我在matlab中有這樣一句話

save(filepath,'TPLBP_ss_codeI');

以此將處理好的TPLBP特徵儲存在mat檔案中,一晚上跑出了幾萬幅圖片,然後第二天我打算用python讀取一下,再做一些預處理然後儲存成npy格式,

import scipy.io as scio  
...
derictors = scio.loadmat(dir_name) #dict
...
np.save("/home/mashuyang/keras_files/data-FPLBP/X_train_FPLBP"+str(split)+".npy",X_train_array)

當然他們都暗藏在迴圈中,在對很多個mat執行正確之後,出現了以下錯誤:

Loading Jake_Plummer files ( Index: 539/920)
Loading Katharine_Hepburn files ( Index: 540/920)
Loading Kenenisa_Bekele files ( Index: 541/920)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-21-1fbc089fc45f> in <module>()
     21         for video in videos:
     22             dir_name=os.path.join(dir_video+'/',video)
---> 23             derictors = scio.loadmat(dir_name) #dict
     24             features=derictors.keys()
     25             X_train_buff=[]

/usr/local/lib/python3.5/dist-packages/scipy/io/matlab/mio.py in loadmat(file_name, mdict, appendmat, **kwargs)
    140     variable_names = kwargs.pop('variable_names', None)
    141     MR, file_opened = mat_reader_factory(file_name, appendmat, **kwargs)
--> 142     matfile_dict = MR.get_variables(variable_names)
    143     if mdict is not None:
    144         mdict.update(matfile_dict)

/usr/local/lib/python3.5/dist-packages/scipy/io/matlab/mio5.py in get_variables(self, variable_names)
    290                 continue
    291             try:
--> 292                 res = self.read_var_array(hdr, process)
    293             except MatReadError as err:
    294                 warnings.warn(

/usr/local/lib/python3.5/dist-packages/scipy/io/matlab/mio5.py in read_var_array(self, header, process)
    250            `process`.
    251         '''
--> 252         return self._matrix_reader.array_from_header(header, process)
    253 
    254     def get_variables(self, variable_names=None):

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.array_from_header()

mio5_utils.pyx in scipy.io.matlab.mio5_utils.VarReader5.array_from_header()

ValueError: Did not fully consume compressed contents of an miCOMPRESSED element. This can indicate that the .mat file is corrupted.

重點就在最後那一句的 “ Did not fully consume compressed contents of an miCOMPRESSED element. This can indicate that the .mat file is corrupted.” 

於是我就查了這個錯誤,百度裡什麼都沒查到,必應裡我找到了這個:

https://stackoverflow.com/questions/42607271/unable-to-read-mat-file-with-scipy?answertab=active#tab-top

這裡邊的說法是mat檔案的版本問題,由於需要執行一晚上才能跑一次,所以現在還沒有結果,一天以後再來更新。

————————————前來抱歉的分割線——————————————

最近找工作就沒看這邊,說好第二天更新的,抱歉抱歉

我記得我是在matlab裡用了這個解決的,

save(filename, 'data', '-v6');

就是我的問題還是關於mat的版本問題,預設生成的好像是最高版本,而Python不能讀取,而為什麼那麼多偏偏這個不行,彷彿是因為我的這個出問題的檔案格外大一些,希望能幫到看見的人 

相關推薦

關於在Python利用scipy讀取mat檔案的問題

事情是這樣的,我在matlab中有這樣一句話 save(filepath,'TPLBP_ss_codeI'); 以此將處理好的TPLBP特徵儲存在mat檔案中,一晚上跑出了幾萬幅圖片,然後第二天我打算用python讀取一下,再做一些預處理然後儲存成npy格式, impo

Matlab 將一個矩陣儲存在.mat檔案,或讀取.mat檔案

例13-3 open與load的比較。  >> clear  >> A = magic(3);  >> B = rand(3);  >> save  S

讀取mat檔案特定資料儲存到txt

最近在做faster-rcnn的內容,資料集標籤給的格式是mat版本,而且標籤內容有些是不需要的,想著提取需要的專案然後存在txt中,自己寫了個matlab檔案: file_path = './'; mat_path_list = dir(strcat(file_path,'*.mat'

Python,關於讀取檔案編碼解碼的問題

UnicodeDecodeError: 'gbk' codec can't decode byte 0xb1 in position 94: illegal multibyte sequence 有時候用open()方法開啟檔案讀取檔案的時候會出現這個問題:‘GBK’編×××無法解碼

python利用pandas讀取Excel檔案和篩選處理小案例

1.問題描述:想要篩選Excel中的資料,篩選條件是 實際收費 > 消費金額,並且儲存篩選的資料為Excel格式!                      資料格式如底部所示! 2.實現:利

python 讀取 mat 檔案

(1) mat4py庫: 功能: 將Matlab 資料匯入為基本的Python資料型別。矩陣是以行為組的儲存方式(使用列表的列表)。 Matlab結構體Struct和元胞Cell 使用Python的詞典表示。 Load data from MAT-fil

python使用h5py讀取mat檔案資料,並儲存影象

1 安裝h5py sudo apt-get install libhdf5-dev sudo pip install h5py 假設你已經安裝好python和numpy模組 2 讀取mat檔案資

在VS2010利用MFC讀取word、ppt、excel格式檔案

void ReadExcel(CString filename) {LPDISPATCH lpDisp = NULL;//COleVariant vResult;COleVariant         covTrue((short)TRUE),         covFalse((short)FALSE),

【matlab】Matlab實現資料以.mat檔案形式的儲存和讀取

1、儲存 利用save函式 save(filename)  %將當前工作區中的所有變數儲存在 MATLAB® 格式的二進位制檔案(MAT 檔案)filename 中。 save(filename,variables) %僅儲存 variables 指定的結構體陣列的變數

python小工具___讀取指定檔案特定字串存入Excel表格

#coding:utf8 import os import os.path import xlwt import xlrd # --- 獲取當前路徑 --- filePath=os.getcwd() # --- 指定測試路徑 --- file01='F:\SVNBalo

python利用pandas讀寫csv文件

and clas byte test pytho csv文件 err 文件 blog 問題1:錯誤提示:UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xb8 原因:含有中文字符 import pandas pa

python利用類創建的對象來保存信息

bsp 保存信息 ngs sha 入學 env exe pre info 在類創建的對象中,一般都是以字典的方式來class Student: class Student: def __init__(self, name, age, score):

python利用字典一鍵多值

from collections import defaultdict d = defaultdict(list) d['a'].append(1) d['a'].append(2) d['b'].append(4) d = defaultdict(set) d['a'].add(1)

專案常用的讀取配置檔案的方式(一)

package com.bjpowernode.demo01; import java.util.ResourceBundle; /** ResourceBundle讀取配置檔案 @author Administrator */ public clas

Python基於imageio讀取視訊進行完美編解碼的簡易方法

讀視訊和寫視訊一直由於編解碼的問題給程式設計師造成很多麻煩。對此進行了一些探索。用Python讀取視訊有兩種主要方法,分別是基於imageio庫和OpenCV,其中OpenCV加上ffmpeg的安裝編譯很麻煩,推薦大家使用第一種方法,不過大家也可依據自己的需求進行使用。 方法一:使用image

java利用poi讀取Excel檔案

java讀取Excel檔案,筆者認為:從結構上來看,Excel檔案是由一個一個的單元格組成的,有點像細胞cell,逐行的排列。那麼我們讀的時候也應該逐行逐行的讀,從左到右的尋找每一個cell。一、例項程式碼: 只是實現了一種方式,因為依照讀取內容的不同,讀取的後想要的操作不同,因此不能苟同全部,只是方法是相

利用Iterator讀取cvs檔案

平時讀取csv檔案都是用while迴圈,最近在看文件時發現一個新方法:利用iterator <?php namespace demo\test; use Iterator; class CsvFileIterator implements Iterator { private $fil

XcodeInfo.plist讀取配置檔案環境變數

1.在Info.plist中新增("add row")一項或者直接在某個key中把對應的value改為 $(變數名)  如“$(APP_VERSION_TEXT)” 2.COMMAND+N 建立一個config檔案 寫入內容   3.使用該c

Python筆記】操作讀取Excel檔案、文字檔案

需求:讀取Excel檔案、替換文字檔案中得指定某個字串並生成新的檔案 原始碼: #encoding:utf-8 # -*- coding: utf-8 -*- #!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2 #Author:

怎麼利用PHP讀取Excel檔案資訊及內容

  PHPExcel是什麼?PHPExcel 就是一個用來操作Office Excel 文件的PHP類庫。在程式設計技術開發中,我們經常要從程式中讀取Excel檔案內容,不過很多初學者都不太會,那麼下面來詳細為大家分析解答一下吧。比如說一個普通的個人資訊表,我們利用PHPExcel類庫將Excel表格內的資訊