如何在 NumPy 中一次乘以 3 个以上的向量
How can I multiply more than 3 vectors at once in NumPy
我正在寻找一种在 NumPy 中将 3 个以上的向量相乘的向量化方法。
例如,
X = np.array([1,2,3])
Y = np.array([4,5,6])
Z = np.array([7,8,9])
Multiply([X,Y,Z])
将产生输出
np.array([28, 80, 162])
我要相乘的向量不需要像我上面那样单独定义。例如,可能是矩阵的行(或列),在这种情况下,我想乘以这种矩阵的所有行(或列)。
感谢帮助:)
你可以使用ufunc的reduce
方法:
>>> np.multiply.reduce((X, Y, Z))
array([ 28, 80, 162])
这里发生的事情是 ufunc np.multiply
,它看起来和行为都像函数,在技术上是 class numpy.ufunc
的一个实例;所有 ufunc 都有 four special methods,其中之一是 .reduce()
,在这种情况下它可以满足您的需求,并从多个相同长度的一维数组中生成一维结果。
默认坐标轴为0;如果您想沿着另一个轴工作,只需指定:
>>> np.multiply.reduce((X, Y, Z), axis=1)
array([ 6, 120, 504])
您可以使用 numpy.prod
,它在后台使用 multiply.reduce
。
>>> np.prod([X, Y, Z], 0)
array([ 28, 80, 162])
>>> np.prod([X, Y, Z], 1)
array([ 6, 120, 504])
或者非常简单地使用通常的 *
表示法:
In [180]: X * Y * Z
Out[180]: array([ 28, 80, 162])
一般来说,您可以根据需要使用任意数量的数组:
In [181]: X * Y * Z * X * Y * Z
Out[181]: array([ 784, 6400, 26244])
我正在寻找一种在 NumPy 中将 3 个以上的向量相乘的向量化方法。
例如,
X = np.array([1,2,3])
Y = np.array([4,5,6])
Z = np.array([7,8,9])
Multiply([X,Y,Z])
将产生输出
np.array([28, 80, 162])
我要相乘的向量不需要像我上面那样单独定义。例如,可能是矩阵的行(或列),在这种情况下,我想乘以这种矩阵的所有行(或列)。
感谢帮助:)
你可以使用ufunc的reduce
方法:
>>> np.multiply.reduce((X, Y, Z))
array([ 28, 80, 162])
这里发生的事情是 ufunc np.multiply
,它看起来和行为都像函数,在技术上是 class numpy.ufunc
的一个实例;所有 ufunc 都有 four special methods,其中之一是 .reduce()
,在这种情况下它可以满足您的需求,并从多个相同长度的一维数组中生成一维结果。
默认坐标轴为0;如果您想沿着另一个轴工作,只需指定:
>>> np.multiply.reduce((X, Y, Z), axis=1)
array([ 6, 120, 504])
您可以使用 numpy.prod
,它在后台使用 multiply.reduce
。
>>> np.prod([X, Y, Z], 0)
array([ 28, 80, 162])
>>> np.prod([X, Y, Z], 1)
array([ 6, 120, 504])
或者非常简单地使用通常的 *
表示法:
In [180]: X * Y * Z
Out[180]: array([ 28, 80, 162])
一般来说,您可以根据需要使用任意数量的数组:
In [181]: X * Y * Z * X * Y * Z
Out[181]: array([ 784, 6400, 26244])