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

齐活,完美了。

你可能感兴趣的:(毕业论文)