我正在寻找一种矢量化的方法来在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从技术上讲是类numpy.ufunc的实例。所有ufunc都具有four special methods,其中一个是.reduce(),在这种情况下,它会执行您要查找的操作,并从多个相同长度的1d数组生成1d结果。

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

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

关于python - 如何在NumPy中一次乘以3个以上的向量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55599437/

10-10 14:33