我有一个线性系统,其中所有矩阵都是分块对角的。它们有N
个相同形状的块。
矩阵以压缩格式存储为numpy数组,形状为(N, n, m)
,而向量的形状为(N, m)
。
我目前实现的矩阵-向量乘积为
import numpy as np
def mvdot(m, v):
return (m * np.expand_dims(v, -2)).sum(-1)
由于广播规则的影响,如果矩阵的所有块都相同,我只需要将其存储一次在形状为
(1, n, m)
的数组中:与向量(N, m)
的乘积仍然会给出正确的(N, n)
向量。我的问题是:
- 如何从具有形状
(N, n, p)
和(N, p, m)
的两个矩阵中实现有效的矩阵乘积,得到形状为(N, n, m)
的矩阵? - 是否存在一种方法可以使用
numpy
内置的(可能更快)函数执行这些操作?像np.linalg.inv
这样的函数让我想到numpy
被设计支持带压缩格式的对角块矩阵。
dot
方法的含义是什么? - dPol