对于可逆矩阵,我们可以
np.linalg.inv在
3D数组上
A使用,然后使用张量矩阵乘法与,
B这样我们就分别失去了这两个数组的最后和第一个轴,就像这样-
np.tensordot( np.linalg.inv(A), B, axes=((-1),(0)))
样品运行-
In [150]: AOut[150]: array([[[ 0.70454189, 0.17544101, 0.24642533], [ 0.66660371, 0.54608536, 0.37250876], [ 0.18187631, 0.91397945, 0.55685133]], [[ 0.81022308, 0.07672197, 0.7427768 ], [ 0.08990586, 0.93887203, 0.01665071], [ 0.55230314, 0.54835133, 0.30756205]]])In [151]: B = np.array([[1],[2],[3]])In [152]: np.linalg.solve(A[0], B)Out[152]: array([[ 0.23594665], [ 2.07332454], [ 1.90735086]])In [153]: np.linalg.solve(A[1], B)Out[153]: array([[ 8.43831557], [ 1.46421396], [-8.00947932]])In [154]: np.tensordot( np.linalg.inv(A), B, axes=((-1),(0)))Out[154]: array([[[ 0.23594665], [ 2.07332454], [ 1.90735086]], [[ 8.43831557], [ 1.46421396], [-8.00947932]]])
另外,张量矩阵乘法可以用代替
np.matmul,像这样-
np.matmul(np.linalg.inv(A), B)
在Python
3.x上,我们可以使用
@operator来实现相同的功能-
np.linalg.inv(A) @ B
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)