沿3D数组中的第三轴计算2D数组的逆数而无循环

沿3D数组中的第三轴计算2D数组的逆数而无循环,第1张

沿3D数组中的第三轴计算2D数组的逆数而无循环

对于可逆矩阵

M
我们拥有
inv(M).T == inv(M.T)
(逆的转置等于转置的逆)。

由于

np.linalg.inv
是可广播的,因此您可以通过简单地转置
A
,调用
inv
和转置结果来解决您的问题:

B = np.linalg.inv(A.T).T

例如:

>>> N, K = 2, 3>>> A = np.random.randint(1, 5, (N, N, K))>>> Aarray([[[4, 2, 3],        [2, 3, 1]],       [[3, 3, 4],        [4, 4, 4]]])>>> B = np.linalg.inv(A.T).T>>> Barray([[[ 0.4  , -4.   ,  0.5  ],        [-0.2  ,  3.   , -0.125]],       [[-0.3  ,  3.   , -0.5  ],        [ 0.4  , -2.   ,  0.375]]])

您可以按预期检查

B
match的逆数组的值
A

>>> all(np.allclose(B[:, :, i], np.linalg.inv(A[:, :, i])) for i in range(K))True


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5631885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存