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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章