我试图加载/运行从test.mm文件的矩阵在python。文件内部的矩阵例如写为
的2x2矩阵 1 1 10
1 2 11
2 1 20
2 2 30
我做了很多研究,但找不到合适的答案。
答案 0 :(得分:0)
解决方案
该代码可能不是有史以来最好的代码,但是可以在您提供的示例中使用。 同样在python中,索引从0开始,您有索引1,2,假设3x3矩阵。我为您的用例进行了修改
import numpy as np
def mm2matrix(file_name,start_line = 1):
with open(file_name,'r') as f:
data = f.read().split('\n')
number = [i.split(' ') for i in data]
number = number[start_line:]
all_numbers = []
for i in range(len(number)):
all_numbers += [float(sub) for sub in number[i] if len(sub)!=0]
mmfile = np.array(all_numbers).reshape(len(all_numbers)/3,3,)
x_index = mmfile[:,0].astype(np.int)-1
y_index = mmfile[:,1].astype(np.int)-1 # you say 2x2 matrix, but you have indexes 1,2
matrix = np.zeros(shape = [np.amax(x_index)+1,np.amax(y_index)+1])
values = mmfile[:,2]
matrix[x_index,y_index]=values
return matrix
matrix = mm2matrix('test.mm')
>>> matrix
array([[10., 11., 22.],
[20., 45., 85.]])
test.mm -我又增加了一列(2x3或3x2)来测试目的
Matrix
1 1 10
1 2 11
1 3 22
2 1 20
2 2 30
2 2 45
2 3 85
如果数组具有切换的轴,则只需对其进行转置
matrix = matrix.T