如何在 NumPy 中一次乘以 3 个以上的向量

我正在寻找一种在 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])

我想要相乘的向量不需要像上面那样单独定义。例如,可能是矩阵的行(或列),在这种情况下,我想乘以此类矩阵的所有行(或列)。


慕田峪9158850
浏览 127回答 3
3回答

BIG阳

您可以使用reduceufunc的方法:>>> np.multiply.reduce((X, Y, Z))                                                                                                                                                                                                                        array([ 28,  80, 162])这里发生的事情是 ufunc np.multiply,它的外观和行为类似于函数,从技术上讲是类的一个实例numpy.ufunc;所有 ufunc 都有四个特殊方法,其中之一是.reduce(),它在这种情况下执行您要查找的操作,并从多个相同长度的一维数组中生成一维结果。默认轴为0;如果您想沿另一个轴工作,只需指定:>>> np.multiply.reduce((X, Y, Z), axis=1)                                                                                                                                                                                                                array([  6, 120, 504])

慕村225694

您可以使用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 * ZOut[180]: array([ 28,  80, 162])通常,您可以根据需要使用任意数量的数组:In [181]: X * Y * Z * X * Y * ZOut[181]: array([  784,  6400, 26244])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python