python讀取mat文件,並轉化爲txt文件

核心爲scipy.io中的loadmat包。

from scipy.io import loadmat
import numpy as np
m = loadmat('E:\\biye\\Rochester38.mat')
print(m.keys())

具體的看一看,文件中的key有哪些。以我的文檔爲例

dict_keys(['__header__', '__version__', '__globals__', 'A', 'local_info'])

其中前三個是公共的,每一個mat文件都會有,我需要提取的內容一個是A,一個是local_info

因爲具體的內容是矩陣,所以這時候需要用numpy讀出內容,並且存在具體的文件夾中,要注意的是numpy喜歡將數據以科學計數法的形式存儲,這裏就需要根據你的數據內容具體形式進行控制,我需要的矩陣內容大部分都是整數,所以直接限制不使用科學計數法,且爲整數

x = m['A']
np.set_printoptions(suppress=True)
np.set_printoptions(precision=3) #設精度爲3
np.save('E:\\biye\\Rochester.adj',x)

由於網絡結構採用鄰接矩陣存儲比較耗費空間,所以準備將其轉化爲稀疏矩陣的存儲形式。這時候就需要用到萬能的networkx包

import numpy as np
import networkx as nx

# -------DIRECTED Graph, Unweighted-----------
# Unweighted directed graph:
a = np.loadtxt('E:\\biye\\Hamilton.adj', delimiter=' ', dtype=int)
D = nx.DiGraph(a)
nx.write_edgelist(D, 'E:\\biye\\Hamilton.edgelist', data=False)  # output

齊活,完美了。

發佈了119 篇原創文章 · 獲贊 35 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章