我有两个 NumPy 数组,我想将它们在每一行中相互相乘。为了说明我的意思,我将代码放在下面:
import numpy as np
a = np.array([
[1,2],
[3,4],
[5,6],
[7,8]])
b = np.array([
[1,2],
[4,4],
[5,5],
[7,10]])
final_product=[]
for i in range(0,b.shape[0]):
product=a[i,:]*b
final_product.append(product)
除了使用循环和列表之外,是否有更直接、更快、更优雅的方式在 NumPy 中执行上述行乘法?
最佳答案
通过使用适当的 reshape 和重复,您可以实现您正在寻找的内容,这是一个简单的实现:
a.reshape(4,1,2) * ([b]*4)
如果长度是动态的,你可以这样做:
a.reshape(a.shape[0],1,a.shape[1]) * ([b]*a.shape[0])
注意:确保a.shape[1]
和b.shape[1]
保持相等,而a.shape[0]
> 和 b.shape[0]
可以不同。
关于python - 逐行进行一定的 numpy 乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73588234/