矩阵 x 向量的逐列标量乘法

Column wise scalar multiplication of matrix x vector

基本上,我想执行矩阵 A 和向量 B 的逐列标量乘法。其中矩阵 A 的每一列都乘以向量 B 中的相应值。我有一个看起来像这样的方法。

def scale_matrix(self, matrix, vector):
    """
    Performs scalar multiplication of matrix and vector column wise
    """
    for value, index in enumerate(vector):
        matrix[:, index] *= value
    return matrix

我在我的代码的其他地方使用了 numpy,我想知道这是否可以仅使用 numpy 来实现?

如果你的矩阵是一个 MxN numpy array 而你的向量是一个 N 向量那么你可以简单地做

matrix * vector

matrix *= vector

如果你想就地使用它。

请注意,如果矩阵或向量属于 np.matrix class,这将不起作用。必须是 np.ndarray.

解释:根据numpy的广播规则,如果操作数的形状长度不同,则较短的填充左边的。这导致形状 (M, N) 和 (1, N)。 1 轴是广播的,即沿着这个轴值在运行中重复以匹配另一个操作数的形状