对于一个项目,我需要从该网站检索稀疏矩阵:https://www.cise.ufl.edu/research/sparse/matrices/list_by_id.html 其中矩阵采用 .MAT 和其他我不太熟悉的格式。我需要将这些矩阵放入 cuda/c 代码中以将这些矩阵相乘。我无法从文件中获取数据,感谢任何帮助或想法。
我从很多网站上看,都说使用
使用
scipy.io.loadmat
,我可以从您的目录加载 .mat
文件之一。
loadmat
可以加载 *.mat
文件(“旧式”)。如果 MATLAB 中存在稀疏数据,它还可以根据该数据创建一个 scipy.sparse
矩阵。为此,必须加载 3 个存储底层稀疏坐标和数据的数据数组,然后运行 sparse.csc_matrix(...)
。
要在其他一些包中执行相同的操作,它需要能够加载
.mat
,并创建一个稀疏矩阵
In [23]: from scipy.io import loadmat
In [24]: data = loadmat('Downloads/494_bus.mat')
In [25]: data
Out[25]:
{'__header__': b'MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Sat Sep 6 04:04:21 2008',
'__version__': '1.0',
'__globals__': [],
'Problem': array([[(array(['S ADMITTANCE MATRIX 494 BUS POWER SYSTEM, D.J.TYLAVSKY, JULY 1985.'],
dtype='<U67'), <494x494 sparse matrix of type '<class 'numpy.float64'>'
with 1666 stored elements in Compressed Sparse Column format>, array(['HB/494_bus'], dtype='<U10'), array([[2]], dtype=uint8), array(['1985'], dtype='<U4'), array(['D. Tylavsky'], dtype='<U11'), array(['I. Duff, R. Grimes, J. Lewis'], dtype='<U28'), array(['power network problem'], dtype='<U21'))]],
dtype=[('title', 'O'), ('A', 'O'), ('name', 'O'), ('id', 'O'), ('date', 'O'), ('author', 'O'), ('ed', 'O'), ('kind', 'O')])}
指定变量“Problem”、结构化数组字段“A”以及 (1,1) 形数组的元素。
In [26]: data['Problem']['A'].item()
Out[26]:
<494x494 sparse matrix of type '<class 'numpy.float64'>'
with 1666 stored elements in Compressed Sparse Column format>
In [27]: data['Problem']['A'].item().A
Out[27]:
array([[2220.874 , 0. , 0. , ..., 0. , 0. ,
0. ],
[ 0. , 5.41067, 0. , ..., 0. , 0. ,
0. ],
[ 0. , 0. , 13.57086, ..., 0. , 0. ,
0. ],
...,
[ 0. , 0. , 0. , ..., 54.05405, 0. ,
0. ],
[ 0. , 0. , 0. , ..., 0. , 111.6384 ,
0. ],
[ 0. , 0. , 0. , ..., 0. , 0. ,
110.9479 ]])