首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩阵计算

矩阵计算
EN

Stack Overflow用户
提问于 2022-11-17 12:10:51
回答 1查看 32关注 0票数 0

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

我不太确定这是正确的,还是我应该做元素智慧或矩阵智慧。有人能告诉我怎么做吗?

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2022-11-17 12:40:37

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

代码语言:javascript
复制
np.array([[1, 2], [3, 4]]) @ np.array([[5, 6], [7, 8]])

代码语言:javascript
复制
np.array([[1*5+2*7, 1*6+2*8], [3*5+4*7, 3*6+4*8]])

对于元素乘法,您可以使用*,它为numpy数组做元素级乘积。

代码语言:javascript
复制
np.array([[1, 2], [3, 4]]) * np.array([[5, 6], [7, 8]])

代码语言:javascript
复制
np.array([[1*5, 2*6], [3*7, 4*8])

要回答您的问题,您可以用以下方法计算R= Aij /Cij的矩阵:

代码语言:javascript
复制
R = np.divide(np.multiply(A, np.transpose(B)), C)

或相当于或较短:

代码语言:javascript
复制
R = A * B.T / C
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74475244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档