我有一个矩阵数组,我想将每个矩阵乘以不同的数字。我是这样试的:

>>> import numpy as np
>>> c = np.array([[[1, 2],[3, 4]],[[1, 2],[3, 4]]])
>>> d = np.array([0.1, 0.2])
>>> d*c
array([[[ 0.1,  0.4],
        [ 0.3,  0.8]],

       [[ 0.1,  0.4],
        [ 0.3,  0.8]]])

虽然我的意图是得到这个结果 -
>>> np.array([d[0]*c[0], d[1]*c[1]])
array([[[ 0.1,  0.2],
        [ 0.3,  0.4]],

       [[ 0.2,  0.4],
        [ 0.6,  0.8]]])

NumPy'iest 的方法是什么?

最佳答案

您需要几个额外的轴:

In [22]: d[:,None,None] * c
Out[22]:
array([[[ 0.1,  0.2],
        [ 0.3,  0.4]],

       [[ 0.2,  0.4],
        [ 0.6,  0.8]]])
d[:,None,None] 具有 (2,1,1) 形状,它在您的 c 形状 (2,2,2) 数组中广播,以将 c 的每个块与 d 的相应元素相乘。

关于python - 将矩阵数组与向量相乘,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34138043/

10-14 15:33
查看更多