沿第三轴通过矢量乘法矩阵

时间:2020-03-19 15:15:15

标签: python numpy

我正在使用numpyPython中执行一些数学计算。 我有一个尺寸为A的{​​{1}}矩阵和一个尺寸为(N, N)的向量b。 我想将m乘以A以获得大小b的张量。 例如,如果是:

(N, N, m)

我想制造产品以获得张量A 1 2 3 4 b 1 2 3

C = A*b

最后,我想获得一个C 1 2 3 4 2 4 6 8 3 6 9 12 矩阵,该矩阵沿第三个方向的C最大值为

(N,N)

是否有一个允许执行此操作的numpy函数?

更新

如果最后我想将向量max(C) 3 6 9 12 的第i个元素添加到(N, N, i)的每个矩阵C中?

在示例中:

b

1 个答案:

答案 0 :(得分:1)

这是利用broadcasting的一种方法:

(b[:,None,None] * A).max(0)

array([[ 3,  6],
       [ 9, 12]])

更新:您可以使用以下方法将b添加到每个内部矩阵:

b[:,None,None] * (1+A)

array([[[ 2,  3],
        [ 4,  5]],

       [[ 4,  6],
        [ 8, 10]],

       [[ 6,  9],
        [12, 15]]])

设置:

A = np.array([[1,2], [3,4]])
b = np.array([1,2,3])