具有矩阵单行乘法的每个向量元素的 Numpy 运算符
Numpy operator for each vector element with matrix individual row multiplication
是否有 numpy 运算符会导致单个向量元素与相应的矩阵行相乘?
例如,
import numpy
a,b=numpy.array([1,2]), numpy.array([[1,2,3,4],[5,6,7,8]])
当我将 a 和 b 相乘时,我希望结果为
[[1,2,3,4],[10,12,14,16]]
其中每个向量元素与相应的矩阵行元素相乘。
我知道如何使用循环来实现它,但我只是想知道 numpy 中是否存在内置函数,尤其是当 b 是一个非常大但稀疏的矩阵时?
谢谢。
您可以像下面这样使用 multiply
:
import numpy
a,b=numpy.array([1,2]), numpy.array([[1,2,3,4],[5,6,7,8]])
print(numpy.multiply(a,b.T).T)
# [[ 1 2 3 4]
# [10 12 14 16]]
其他选项是使用 *
并像下面这样转置:
import numpy
a,b=numpy.array([1,2]), numpy.array([[1,2,3,4],[5,6,7,8]])
print(a*b.T)
# [[ 1 10]
# [ 2 12]
# [ 3 14]
# [ 4 16]]
您可以使用:
a[:,None]*b
这应该是相当快的,没有额外的计算成本。
输出:
[[ 1 2 3 4]
[10 12 14 16]]
是否有 numpy 运算符会导致单个向量元素与相应的矩阵行相乘?
例如,
import numpy
a,b=numpy.array([1,2]), numpy.array([[1,2,3,4],[5,6,7,8]])
当我将 a 和 b 相乘时,我希望结果为
[[1,2,3,4],[10,12,14,16]]
其中每个向量元素与相应的矩阵行元素相乘。
我知道如何使用循环来实现它,但我只是想知道 numpy 中是否存在内置函数,尤其是当 b 是一个非常大但稀疏的矩阵时?
谢谢。
您可以像下面这样使用 multiply
:
import numpy
a,b=numpy.array([1,2]), numpy.array([[1,2,3,4],[5,6,7,8]])
print(numpy.multiply(a,b.T).T)
# [[ 1 2 3 4]
# [10 12 14 16]]
其他选项是使用 *
并像下面这样转置:
import numpy
a,b=numpy.array([1,2]), numpy.array([[1,2,3,4],[5,6,7,8]])
print(a*b.T)
# [[ 1 10]
# [ 2 12]
# [ 3 14]
# [ 4 16]]
您可以使用:
a[:,None]*b
这应该是相当快的,没有额外的计算成本。
输出:
[[ 1 2 3 4]
[10 12 14 16]]