假设我有一个(c x d)
矩阵列表。就像我有a
个。我对每个矩阵都有a
系数。
NumPy中有没有一种快速的方法可以立即将每个矩阵标量乘以矩阵系数,同时仍保持张量数据结构,还是我需要在for循环中手动遍历?即X = np.array([np.multiply(coefs[i], X[i]) for i in range(len(coefs))])
即X.shape = (3, 4, 5)
,coefs.shape = (3)
。
最佳答案
X = np.array([[[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]],
[[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]],
[[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]]])
coeffs = np.array([2,4,6])
您需要将轴添加到
coeffs
,以便它将以所需的尺寸进行广播。>>> X * coeffs[:, np.newaxis, np.newaxis]
array([[[2, 2, 2, 2, 2],
[2, 2, 2, 2, 2],
[2, 2, 2, 2, 2],
[2, 2, 2, 2, 2]],
[[4, 4, 4, 4, 4],
[4, 4, 4, 4, 4],
[4, 4, 4, 4, 4],
[4, 4, 4, 4, 4]],
[[6, 6, 6, 6, 6],
[6, 6, 6, 6, 6],
[6, 6, 6, 6, 6],
[6, 6, 6, 6, 6]]])
>>>
np.newaxis
允许coeffs
的值与X
的第一个维度对齐,然后在其余维度上为broadcast。关于python - 将(a x a)方阵乘以(a x c x d)矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27613795/