【问题标题】:Matrix by vector multiplication along third axis沿第三轴的向量乘法矩阵
【发布时间】:2020-06-30 18:11:08
【问题描述】:

我正在使用numpyPython 中执行一些数学计算。 我有一个维度为(N, N)A 矩阵和一个维度为m 的向量b。 我想将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

最后想得到一个(N,N)矩阵,C沿第三方向的最大值,即

max(C)
3 6
9 12

是否有允许此操作的 numpy 函数?

更新

如果最后我想将向量b的第i个元素添加到C的每个矩阵(N, N, i)

在示例中:

A
1 2
3  4

b
1  2  3

C = A*b
1  2
3  4

2  4
6  8

3  6
9  12

D = C+b
2  3
4  5

4  6
8  10

6  9
12 15

【问题讨论】:

    标签: python numpy


    【解决方案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])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2011-11-24
      • 2020-03-16
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多