首页 > 解决方案 > 不同形状的 NumPy 数组的元素乘法

问题描述

当我使用numpy.multiply(a,b)将 numpy 数组与形状相乘时,(2, 1),(2,)我得到一个 2 x 2 矩阵。但我想要的是逐元素乘法。

我不熟悉numpy的规则。谁能解释这里发生了什么?

标签: numpymatrixvectorlinear-algebramultiplication

解决方案


当在两个不同维度的数组之间进行元素操作时,NumPy 将执行广播。在您的情况下,Numpy 将b沿以下行广播a

import numpy as np
a = np.array([[1],
              [2]])
b = [3, 4]
print(a * b)

给出:

[[3 4]
 [6 8]]

为了防止这种情况,您需要使ab具有相同的维度。np.newaxis您可以使用或None在索引中向数组添加维度,如下所示:

print(a * b[:, np.newaxis]) 

给出:

[[3]
 [8]]

推荐阅读