假设我有一个(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/

10-10 16:47
查看更多