在 Numpy 中将 2D 数组与 3D 向量数组相乘

问题描述 投票:0回答:1

我有一个 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)
python arrays numpy
1个回答
0
投票

我认为你想要进行批量矩阵乘法,你可以使用

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 的轴可能会更容易。

© www.soinside.com 2019 - 2024. All rights reserved.