将矩阵数组与向量相乘

时间:2015-12-07 16:08:42

标签: python arrays numpy

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

>>> 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最简单的方法是什么?

2 个答案:

答案 0 :(得分:3)

你需要额外的几个轴:

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的每个块乘以{{{{1}的相应元素1}}。

答案 1 :(得分:2)

你可以通过普通广播来做到这一点:

updated