python - 逐行进行一定的 numpy 乘法

标签 python arrays numpy row multiplication

我有两个 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/

相关文章:

python - 如何创建更改同一类属性的类属性

python 生成器重复

java - 如何在Android中解析JSON数组(不是Json对象)

Java程序占用内存过多

python - 如何使用 pycurl 很好地处理 KeyboardInterrupt (Ctrl-c)?

python - python 列表中的 Writerows - 如何删除括号和撇号

Python Pandas 找到非零索引

python - 对角蛇填充数组

arrays - 在 O(n) 时间内找到数组中的 10 个最大整数

python - scipy.optimize.curve_fit 错误 - 函数结果不是正确的 float 组