numpy - 不同形状的 NumPy 数组的逐元素乘法

标签 numpy matrix vector linear-algebra multiplication

当我使用 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]]

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

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

给予:

[[3]
 [8]]

关于numpy - 不同形状的 NumPy 数组的逐元素乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51347854/

相关文章:

R:将数组转换为一行矩阵

r - 如何在R中创建一个空矩阵?

python - 跳过每组中的前 n 行

python - numpy 中用最少内存对上三角元素求和的最快方法

python - 绘制从一组到另一组的复杂函数

actionscript-3 - 带有初始值的 as3 向量

c - 在 numpy vector 上使用标量 C 函数

python - 如何在numpy中的二维矩阵中随机采样

reporting-services - Reporting Services - 有条件地隐藏矩阵列

vector - Julia:检查一个向量中的元素是否在另一个向量中