gpt4 book ai didi

numpy - 为什么矩阵乘法会根据它们的分组方式给出不同的结果?

转载 作者:行者123 更新时间:2023-12-02 00:46:25 25 4
gpt4 key购买 nike

我们知道 A*B*C = A*(B*C),但为什么这个矩阵乘法得到不同的结果?

import numpy as np

A = np.array([[1,2,3],[4,5,6]])

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

print( A.dot( np.linalg.inv(B) ).dot(A.T) )

print( A.dot( np.linalg.inv(B).dot(A.T) ) )

结果是

[[ 0.5  2. ]
[ 1. 4. ]]

[[  2.   4.]
[ 8. 16.]]

最佳答案

B 的秩不足以取反。为了至少获得一致的结果,请使用 np.linalg.pinv 作为伪逆。

np.linalg.matrix_rank(B)
# we want 3

# we got 2
2

A = np.array([[1,2,3],[4,5,6]])

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

print( A.dot( np.linalg.pinv(B) ).dot(A.T) )

print( A.dot( np.linalg.pinv(B).dot(A.T) ) )

[[ 1. 4.]
[ 2. 5.]]
[[ 1. 4.]
[ 2. 5.]]

关于numpy - 为什么矩阵乘法会根据它们的分组方式给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43531685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com