欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Matlab中的mat數(shù)據(jù)轉(zhuǎn)成python中使用的npy數(shù)據(jù)遇到的坑及解決

 更新時(shí)間:2022年12月15日 08:37:28   作者:faithfulzl  
這篇文章主要介紹了Matlab中的mat數(shù)據(jù)轉(zhuǎn)成python中使用的npy數(shù)據(jù)遇到的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

最近做的工作涉及將matlab中的處理好的mat數(shù)據(jù)轉(zhuǎn)換成npy數(shù)據(jù),送入到網(wǎng)絡(luò)中學(xué)習(xí)。在處理數(shù)據(jù)時(shí)遇到的一些問題總結(jié)如下。

Matlab中的Cell

cell數(shù)組的數(shù)組(指的是兩層cell)不能使用cell2mat函數(shù)

為了解決這個(gè)問題,涉及matlab中元組數(shù)據(jù)的讀取和保存。

cell的讀取

cell的{}是指向cell的內(nèi)容,而cell的()是指向cell的位置。

cell和mat矩陣的轉(zhuǎn)換

單個(gè)的cell轉(zhuǎn)換成mat可以直接使用cell2mat函數(shù)。

cell2mat:將元胞數(shù)組成普通矩陣(要求cell元胞數(shù)組的所有內(nèi)容都必須為相同數(shù)據(jù)類型,可以為字符,會(huì)轉(zhuǎn)化為字符矩陣)

如果是兩層以上的cell可以自己寫循環(huán)依次將數(shù)據(jù)讀出來,存入另一個(gè)數(shù)據(jù)中。

for i=1:n_actions_train
? ? ?for j=1:n_num
? ? ? ? ?matrix_train(i,j,:,:,:)=train_fea{i}{j}; ?%train_fea是cell數(shù)據(jù)
? ? ?end ? ??
?end

Matlab中的reshape和permute

reshape

重構(gòu)函數(shù),將給定的數(shù)據(jù)重構(gòu)成我們需要的size的數(shù)據(jù)。

用法:

B = reshape(A,sz)
B = reshape(A,sz1,...,szN)

B = reshape(A,sz) 使用大小向量 sz 重構(gòu) A 以定義 size(B)。

例如,reshape(A,[2,3]) 將 A 重構(gòu)為一個(gè) 2×3 矩陣。

sz 必須至少包含 2 個(gè)元素,prod(sz) 必須與 numel(A) 相同。

% eg. 1: 將 1×10 向量重構(gòu)為 5×2 矩陣。
A = 1:10;
B = reshape(A,[5,2])

每個(gè)維度的大小,指定為具有最多一個(gè) [](可選)的兩個(gè)或以上的整數(shù)。必須至少指定 2 個(gè)維度大小,并且最多一個(gè)維度大小可以指定為 [],這樣會(huì)自動(dòng)計(jì)算該維度的大小以確保 numel(B) 與 numel(A) 相匹配。

當(dāng)使用 [] 自動(dòng)計(jì)算維度大小時(shí),顯式指定的維度必須均勻劃分為輸入矩陣 numel(A) 中的元素?cái)?shù)目。

對(duì)于第二個(gè)維度以上的維度,輸出 B 不反映大小為 1 的尾部維度。例如,reshape(A,3,2,1,1) 生成 3×2 矩陣。

permute

置換數(shù)組維度

B = permute(A,dimorder)

eg. 1 : 創(chuàng)建一個(gè) 3×4×2 數(shù)組并對(duì)其進(jìn)行置換,交換第一個(gè)維度和第三個(gè)維度,從而得到 2×4×3 數(shù)組.
A = rand(3,4,2)
B = permute(A,[3 2 1])

reshape和permute函數(shù)的區(qū)別主要在于reshape會(huì)改變數(shù)據(jù)的維度,但數(shù)據(jù)總量是不變的,只是按原來數(shù)據(jù)的行列組合變化到新的數(shù)據(jù)排列方式,其中每個(gè)維度的size都可能發(fā)生變化。

permute函數(shù)只是調(diào)換數(shù)據(jù)維度的順序,比如我們要從某個(gè)數(shù)據(jù)中拿到某兩個(gè)維度之間的矩陣,我們可以先用這個(gè)函數(shù)將這兩個(gè)維度先調(diào)到外面,方便我們?nèi) ?/p>

這個(gè)函數(shù)不會(huì)改變每個(gè)維度的size。

Please use HDF reader for matlab v7.3 files

matlab中對(duì)于較大打mat文件,都建議使用v7.3 來保存數(shù)據(jù),但是scipy包中的loadmat函數(shù)不能讀取這個(gè)版本的數(shù)據(jù),搜了一下問題,發(fā)現(xiàn)h5py包中的File函數(shù)可以讀取這個(gè)數(shù)據(jù),添加h5py后使用h5py.File()函數(shù)就可以讀取了。

IndexError: only integers, slices (:), ellipsis (...)……

經(jīng)檢查,錯(cuò)誤之處在索引處使用了浮點(diǎn)數(shù),把matlab中獲得的數(shù)據(jù)強(qiáng)制轉(zhuǎn)換成int型。

因?yàn)閙atlab中數(shù)據(jù)默認(rèn)保存成double數(shù)據(jù),所以如果轉(zhuǎn)換到其他語言時(shí),要注意到這一點(diǎn),并且提前強(qiáng)制轉(zhuǎn)換。

IndexError: index *** is out of bounds for axis 1 with size ***

問題在于下表越界,因?yàn)閺膍atlab中獲得的鄰接矩陣記錄鄰居時(shí),下標(biāo)從1開始,而python中默認(rèn)下標(biāo)從0開始。

值得注意的是matlab中下標(biāo)維度都是從1開始的,而且matlab中的矩陣讀取順序是列優(yōu)先的,其他語言比如python和C++都是行優(yōu)先的。所以數(shù)據(jù)遷移過去都需要先transpose。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)通過文件路徑獲取文件hash值的方法

    Python實(shí)現(xiàn)通過文件路徑獲取文件hash值的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)通過文件路徑獲取文件hash值的方法,結(jié)合實(shí)例形式分析了Python針對(duì)文件進(jìn)行hash運(yùn)算的實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-04-04
  • Python中的命令行參數(shù)解析工具之docopt詳解

    Python中的命令行參數(shù)解析工具之docopt詳解

    docopt 是一個(gè)用來解析命令行參數(shù)的工具,當(dāng)想要在 Python 程序后面附加參數(shù)時(shí),就不需要再為此而發(fā)愁了。下面這篇文章主要介紹了Python中命令行參數(shù)解析工具之docopt的相關(guān)資料,介紹的非常詳細(xì),需要的朋友們下面來一起看看吧。
    2017-03-03
  • Python中的QPixmap用法詳解

    Python中的QPixmap用法詳解

    QPixmap主要用于繪圖,針對(duì)圖像顯示而最佳化設(shè)計(jì),這篇文章主要介紹了Python中的QPixmap用法,對(duì)QPixmap使相關(guān)知識(shí)感興趣的朋友一起看看吧
    2023-03-03
  • python fabric實(shí)現(xiàn)遠(yuǎn)程操作和部署示例

    python fabric實(shí)現(xiàn)遠(yuǎn)程操作和部署示例

    這篇文章主要介紹了python使用fabric實(shí)現(xiàn)遠(yuǎn)程操作和部署示例,需要的朋友可以參考下
    2014-03-03
  • elasticsearch python 查詢的兩種方法

    elasticsearch python 查詢的兩種方法

    這篇文章主要介紹了elasticsearch python 查詢的兩種方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • python中l(wèi)xml.etree 和 ElementTree 的區(qū)別解析

    python中l(wèi)xml.etree 和 ElementTree 的區(qū)別解析

    lxml.etree 提供了更多的功能,例如 XPath、XSLT、Relax NG、 和 XML 模式支持,etree 對(duì) Python unicode 字符串的想法與 ElementTree 不同,本文給大家介紹python中l(wèi)xml.etree 和 ElementTree 的區(qū)別,感興趣的朋友一起看看吧
    2024-01-01
  • python實(shí)現(xiàn)棋盤覆蓋問題及可視化

    python實(shí)現(xiàn)棋盤覆蓋問題及可視化

    這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)棋盤覆蓋問題及可視化的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 在pycharm中設(shè)置顯示行數(shù)的方法

    在pycharm中設(shè)置顯示行數(shù)的方法

    今天小編就為大家分享一篇在pycharm中設(shè)置顯示行數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python中的Decorator裝飾器的使用示例

    Python中的Decorator裝飾器的使用示例

    裝飾器(decorator)在Python框架中扮演著重要角色,是Python中實(shí)現(xiàn)切面編程(AOP)的重要手段,本文將通過簡單的示例和大家介紹下具體的使用方法,希望對(duì)大家有所幫助
    2022-12-12
  • Python?的Json?模塊編碼詳解

    Python?的Json?模塊編碼詳解

    這篇文章主要為大家介紹了Python?的Json?模塊編碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2021-11-11

最新評(píng)論