def get_row(matrix, row):
return matrix[row]
def get_column(matrix, column_number):
column = []
for i in range(len(matrix)):
column.append(matrix[i][column_number])
return column
def dot_product(vector_one, vector_two):
sum = 0
for i in range(len(vector_one)):
sum = sum + vector_one[i] * vector_two[i]
return sum
def matrix_multiplication(matrixA, matrixB):
A = len(matrixA)
B = len(matrixB[0])
### HINT: The len function in Python will be helpful
m_rows = A
p_columns = B
result = []
row_result = []
for i in range(m_rows):
row_vector = get_row(matrixA, i)
for j in range(p_columns):
column_vector = get_column(matrixB,j)
product = dot_product(row_vector, column_vector)
row_result.append(product)
result.append(row_result)
row_result = []
return result
矩阵转置
def transpose(matrix):
matrix_transpose = []
row_result = []
row = len(matrix)
column = len(matrix[0])
for j in range(column):
for i in range(row):
row_result.append(matrix[i][j])
matrix_transpose.append(row_result)
row_result = []
return matrix_transpose
利用转置实现矩阵乘法
def dot_product(vector_one, vector_two):
sum = 0
for i in range(len(vector_one)):
sum = sum + vector_one[i] * vector_two[i]
return sum
def matrix_multiplication(matrixA, matrixB):
product = []
row_result = []
## Take the transpose of matrixB and store the result
## in a new variable
matrixB_transpose = transpose(matrixB)
## Use a nested for loop to iterate through the rows
## of matrix A and the rows of the tranpose of matrix B
for i in range(len(matrixA)):
for j in range(len(matrixB_transpose)):
dot_result = dot_product(matrixA[i], matrixB_transpose[j])
row_result.append(dot_result)
## TODO: Calculate the dot product between each row of matrix A
## with each row in the transpose of matrix B
product.append(row_result)
row_result = []
return product
生成单位阵
def identity_matrix(n):
identity = []
row = []
# Write a nested for loop to iterate over the rows and
# columns of the identity matrix. Remember that identity
# matrices are square so they have the same number of rows
# and columns
for i in range(n):
for j in range(n):
if i == j:
row.append(1)
else:
row.append(0)
identity.append(row)
row = []
# Make sure to assign 1 to the diagonal values and 0 everywhere
# else
return identity