我有一个 dxd 矩阵,我想将其与 dx1xn 矩阵相乘。这个想法是得到另一个 dx1xn 矩阵,所以我本质上想沿着第三个轴将每个 dxd 矩阵与每个 dx1 矩阵相乘 n 次。但我不知道该怎么做。我尝试过
np.apply_along_axis
和 np.apply_over_axes
,但第一个仅选择一个轴而不是 dx1 矩阵,第二个也没有做我想要的事情。
k = 2
s = 36
d = k + s - 1
n = 1119
T = np.zeros(shape=(d, d)
alpha_filt = np.zeros(shape=(d, 1, n))
# Doesn't work obviously
np.matmul(T, alpha_filt)
我认为你想要进行批量矩阵乘法,你可以使用
np.matmul
来完成,但是批量维度必须是领先的。例如,如果 alpha_filt
的形状为 (n, d, 1)
,那就可以正常工作。您可以使用转置来实现这一点:
out = np.matmul(T, alpha_filt.transpose(2, 0, 1)).transpose(1, 2, 0)
但是重构代码可能更容易,以便使用
(n, d, 1)
数组而不是 (d, 1, n)
。
在您的情况下,完全删除尺寸为 1 的轴可能会更容易。