如何在 NumPy 中同时乘以 3 个以上向量

L. *_* B. 2 python numpy multiplication multidimensional-array numpy-ndarray

我正在寻找一种矢量化方法来在 NumPy 中乘以 3 个以上的向量。

举个例子,

X = np.array([1,2,3])
Y = np.array([4,5,6])
Z = np.array([7,8,9])


Multiply([X,Y,Z])
Run Code Online (Sandbox Code Playgroud)

将产生作为输出

np.array([28, 80, 162])
Run Code Online (Sandbox Code Playgroud)

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

帮助赞赏:)

Bra*_*mon 5

您可以使用reduceufunc的方法:

>>> np.multiply.reduce((X, Y, Z))                                                                                                                                                                                                                        
array([ 28,  80, 162])
Run Code Online (Sandbox Code Playgroud)

这里发生的事情是 ufunc np.multiply,它的外观和行为都像函数,从技术上讲是该类的一个实例numpy.ufunc;所有 ufunc 都有四种特殊方法,其中之一是.reduce(),它可以完成您在本例中寻找的操作,并从多个相同长度的一维数组生成一维结果。

默认轴为0;如果您想沿另一个轴工作,只需指定:

>>> np.multiply.reduce((X, Y, Z), axis=1)                                                                                                                                                                                                                
array([  6, 120, 504])
Run Code Online (Sandbox Code Playgroud)