当我使用 numpy.multiply(a,b)
将 numpy 数组与形状 (2, 1),(2,)
相乘时,我得到 2 乘以 2矩阵。但我想要的是逐元素乘法。
我不熟悉 numpy 的规则。谁能解释这里发生了什么?
最佳答案
在不同维度相同的两个数组之间进行逐元素运算时,NumPy 将执行广播。在你的例子中,Numpy 将沿着 a
的行广播 b
:
import numpy as np
a = np.array([[1],
[2]])
b = [3, 4]
print(a * b)
给予:
[[3 4]
[6 8]]
为防止这种情况,您需要使a
和b
具有相同的维度。您可以在索引中使用 np.newaxis
或 None
向数组添加维度,如下所示:
print(a * b[:, np.newaxis])
给予:
[[3]
[8]]
关于numpy - 不同形状的 NumPy 数组的逐元素乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51347854/