矩阵 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 轴是广播的,即沿着这个轴值在运行中重复以匹配另一个操作数的形状
基本上,我想执行矩阵 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 轴是广播的,即沿着这个轴值在运行中重复以匹配另一个操作数的形状