矩阵计算Numpy



我试图用numPy广播计算Rij = Aij x Bji/Cij。如果矩阵大小不相同(n × n),也会引发异常。

我不确定这是否正确,或者我是否应该做元素明智或矩阵明智。谁能告诉我怎么做?

A = [[(i+j)/2000 for i in range(500)] for j in range(500)]
B = [[(i-j)/2000 for i in range(500)] for j in range(500)]
C = [[((i+1)/(j+1))/2000 for i in range(500)] for j in range(500)]

def matrix_R(A,B,C):
A1 = np.array(A)
B1 = np.array(B)
C1 = np.array(C)   
eq = (A1 @ np.transpose(B1)) 
Rij = np.divide(eq, C1)

if len(A1) != len(B1) or len(A1) != len(C1):
raise ArithmeticError('Matrices are NOT the same size.')
return Rij


matrix_R(A, B, C)

@是numpy数组的矩阵乘积运算符。

np.array([[1, 2], [3, 4]]) @ np.array([[5, 6], [7, 8]])

np.array([[1*5+2*7, 1*6+2*8], [3*5+4*7, 3*6+4*8]])

对于元素乘法,你可以使用*来对numpy数组进行逐元素乘积。

np.array([[1, 2], [3, 4]]) * np.array([[5, 6], [7, 8]])

np.array([[1*5, 2*6], [3*7, 4*8])

要回答你的问题,你可以计算矩阵R Rij = Aij x Bji/Cij:

R = np.divide(np.multiply(A, np.transpose(B)), C)

或更短的

R = A * B.T / C

最新更新