繁体   English   中英

矩阵计算 Numpy

[英]Matrix Calculation 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 arrays 的矩阵乘积运算符。

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 arrays 进行元素乘积。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM