numpy - 列向量的标量乘法乘行向量

Ste*_*ter 5 python numpy vector matrix

在python numpy中解决以下问题的最佳和最有效的方法是什么:

给出一个权重向量:

weights = numpy.array([1, 5, 2])
Run Code Online (Sandbox Code Playgroud)

和值向量:

values = numpy.array([1, 3, 10, 4, 2])
Run Code Online (Sandbox Code Playgroud)

结果我需要一个矩阵,它在每一行包含values矢量标量乘以值weights[row]:

result = [
    [1,  3, 10,  4,  2],
    [5, 15, 50, 20, 10],
    [2,  6, 20,  8,  4]
]
Run Code Online (Sandbox Code Playgroud)

我发现的一个解决方案如下:

result = numpy.array([ weights[n]*values for n in range(len(weights)) ])
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

NPE*_*NPE 8

此操作称为外部产品.它可以使用numpy.outer()以下方式执行:

In [6]: numpy.outer(weights, values)
Out[6]: 
array([[ 1,  3, 10,  4,  2],
       [ 5, 15, 50, 20, 10],
       [ 2,  6, 20,  8,  4]])
Run Code Online (Sandbox Code Playgroud)