Python 3.x 需要矩阵乘法帮助吗
我有这三个完整的函数,它们返回所需的矩阵行,矩阵列,以及行和列的点积,我需要在第四个函数中将它们网格化,以找到两个矩阵相乘的乘积。有什么建议吗Python 3.x 需要矩阵乘法帮助吗,python-3.x,user-defined-functions,matrix-multiplication,dot-product,Python 3.x,User Defined Functions,Matrix Multiplication,Dot Product,我有这三个完整的函数,它们返回所需的矩阵行,矩阵列,以及行和列的点积,我需要在第四个函数中将它们网格化,以找到两个矩阵相乘的乘积。有什么建议吗 #Test matrices A = [[2,4], [7,0], [6,3]] B = [[3,1], [-1,8], [-3, 3]] C = [[4,1,9], [6,2,8], [7,3,5]] D = [[2,9], [5,2], [1,0]] def row(A,i): Z = [] Z.append(A[i]) r
#Test matrices
A = [[2,4], [7,0], [6,3]]
B = [[3,1], [-1,8], [-3, 3]]
C = [[4,1,9], [6,2,8], [7,3,5]]
D = [[2,9], [5,2], [1,0]]
def row(A,i):
Z = []
Z.append(A[i])
return Z[0]
def col(B,j):
Z=[]
for i in range(len(B)):
Z.append(B[i][j])
return Z
def dotProduct(x,y):
prod=0
for i in range(len(x)):
prod=prod+x[i]*y[i]
return prod
def matrixMUL(A, B):
Z = []
....
return Z
具有3个以上辅助功能的解决方案:
from functools import partial
#Test matrices
A = [[2,4], [7,0], [6,3]]
B = [[3,1], [-1,8], [-3, 3]]
C = [[4,1,9], [6,2,8], [7,3,5]]
D = [[2,9], [5,2], [1,0]]
def row(A,i):
Z = []
Z.append(A[i])
return Z[0]
def col(B,j):
Z=[]
for i in range(len(B)):
Z.append(B[i][j])
return Z
def dotProduct(x,y):
prod=0
for i in range(len(x)):
prod=prod+x[i]*y[i]
return prod
def shape(A):
num_rows = len(A)
num_cols = len(A[0]) if A else 0
return num_rows, num_cols
def matrix_product_entry(A, B, i, j):
return dotProduct(row(A, i), col(B, j))
def matrix_make(rows, cols, entry_fn):
return [[entry_fn(i, j) for j in range(cols)]
for i in range(rows)]
def matrixMUL(A, B):
n1, k1 = shape(A)
print(n1, k1)
n2, k2 = shape(B)
if k1 != n2:
raise ArithmeticError("matrices shapes are not compatible!")
return matrix_make(n1, k2, partial(matrix_product_entry, A, B))
print (matrixMUL(C, D))
# returns [[22, 38], [30, 58], [34, 69]]
你把它们网格化是什么意思?在matrixMUL(A,B)中使用它们。你有没有考虑过使用和?它们内置了用于各种矩阵操作的矢量化函数。@user2146234您似乎有很多矩阵操作。正如MattDMo所建议的,你可以研究numPY和SciPy,看看我的老问题。。这些图书馆真是太酷了。。如果你想尝试一些小功能,我建议你使用一个好的解释器。您还可以尝试Spyder,如果您是初学者并且需要基于UI的开发环境,这是一个不错的选择。