import linecache
fileA = open('matrixA.txt', 'r' )
line2 = linecache.getline('matrixA.txt', 2)
line3 = linecache.getline('matrixA.txt', 3)
line4 = linecache.getline('matrixA.txt', 4)
two = line2.split()
list2 = list(map(int, two))
three = line3.split()
list3 = list(map(int,three))
four = line4.split()
list4 = list(map(int, four))
listA = [list2]+[list3]+[list4]
print (listA)
fileB = open('matrixB.txt', 'r')
Bline2 = linecache.getline('matrixB.txt', 2)
Bline3 = linecache.getline('matrixB.txt', 3)
Bline4 = linecache.getline('matrixB.txt', 4)
btwo = Bline2.split()
blist2 = list(map(int, btwo))
bthree = Bline3.split()
blist3 = list(map(int,bthree))
bfour = Bline4.split()
blist4 = list(map(int, bfour))
listB = [blist2] + [blist3] + [blist4]
print (listB)
q = listA[0] #
h = listB[0] #This part dosn't work
aq = q*h #
print(aq) #
//for i in range(listA):
所以我的代码到目前为止我的2个文件A打印为:
[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
文件B打印为:
[[3,3,9],[7,4,8],[4,20,30]]
我如何让这两个矩阵相乘,我知道你需要位置,但我不知道如何进行循环。
答案 0 :(得分:2)
我假设您已正确加载* .txt数据(您开始从第二行读取数据),然后将其乘以简单的数据,将其转换为numpy数组并使用np.dot
。< / p>
import numpy as np
A = np.asarray(listA)
B = np.asarray(listB)
res = np.dot(B,A)
print(res)
或者你可以通过索引列表而不用numpy来做到这一点:
res = [[0] * len(listA[0]) for _ in range(len(listB))]
for i in range(len(listB)):
for j in range(len(listA[0])):
for k in range(len(listA)):
res[i][j] += listB[i][k]*listA[k][j]
print(res)
要确保您的矩阵可以倍增,请先检查尺寸:
if len(listA)==len(listB[0]):
res = [[0] * len(listA[0]) for _ in range(len(listB))]
for i in range(len(listB)):
for j in range(len(listA[0])):
for k in range(len(listA)):
res[i][j] += listB[i][k]*listA[k][j]
print(res)
else:
print("ERROR! Size Mismatch")