为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪9158850 2022-01-05 12:08:42
我正在寻找一种在 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])我想要相乘的向量不需要像上面那样单独定义。例如,可能是矩阵的行(或列),在这种情况下,我想乘以此类矩阵的所有行(或列)。
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

您可以使用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])


查看完整回答
反对 回复 2022-01-05
?
慕村225694

TA贡献1880条经验 获得超4个赞

您可以使用numpy.prod, 它multiply.reduce在引擎盖下使用。


>>> np.prod([X, Y, Z], 0)

array([ 28,  80, 162])


>>> np.prod([X, Y, Z], 1)

array([  6, 120, 504])


查看完整回答
反对 回复 2022-01-05
?
忽然笑

TA贡献1806条经验 获得超5个赞

或者非常简单地使用通常的*符号:


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])


查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信