不用numpy的方法来计算矩阵相乘
innerproduct是计算两个向量的内积
函数AxIP应该使用内积来计算结果的向量(称之为b)
你应该写一个单一的循环,只用A[i,:]来引用A的行。b的每个元素 的每个元素都应该用你的innerProduct()函数来构建。
函数AxVS应将结果向量b作为向量和来计算
在AxVS中,你应该写一个单一的循环,只用A[:,i]来引用列A。使用这些列来 用一个矢量和来计算b
不用numpy的方法来计算矩阵相乘
innerproduct是计算两个向量的内积
函数AxIP应该使用内积来计算结果的向量(称之为b)
你应该写一个单一的循环,只用A[i,:]来引用A的行。b的每个元素 的每个元素都应该用你的innerProduct()函数来构建。
函数AxVS应将结果向量b作为向量和来计算
在AxVS中,你应该写一个单一的循环,只用A[:,i]来引用列A。使用这些列来 用一个矢量和来计算b
import numpy as np
def innerProduct(a, b):
return sum(i * j for i, j in zip(a, b))
def AxIP(A, x):
col_result = []
for i in range(A.shape[0]):
col_result.append([innerProduct(A[i, :], x)])
return np.array(col_result)
def AxVS(A, B):
result = []
for i in range(B.shape[1]):
result.append(AxIP(A, B[:, i]))
return np.hstack(result)
A = np.array([[1, 2], [3, 4]])
B = np.array([[3, 6], [1, 1]])
print(AxVS(A, B))
A = np.array([[1, 2]])
B = np.array([[3], [6]])
print(AxVS(A, B))
A = np.array([[1], [2]])
B = np.array([[3, 6]])
print(AxVS(A, B))
测试了(n*n)*(n*n), (n*1)*(1*n), (1*n)*(n*1)