如何将两个不同维度的numpy数组相乘

Ada*_*dam 4 python arrays numpy matrix

我尝试将 2 个矩阵 x,y 与形状 (41) 和 (41,6) 相乘,因为它应该将单个矩阵广播到多维度中的每个箭头

我想这样做:

x*y
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误

ValueError: operands could not be broadcast together with shapes (41,6) (41,) 
Run Code Online (Sandbox Code Playgroud)

我有什么想念的东西可以让这一切成为可能吗?

hpa*_*ulj 7

广播涉及2个步骤

  • 为所有数组提供相同的维数

  • 扩展1维度以匹配其他数组

根据您的输入

(41,6) (41,)
Run Code Online (Sandbox Code Playgroud)

一个是 2d,另一个是 1d;广播可以改变 1d 为(1, 41),但它不会自动向另一个方向扩展(41,1)

(41,6) (1,41) 
Run Code Online (Sandbox Code Playgroud)

(41,41) 或 (6,41) 都不匹配。

所以你需要改变你的yto(41,1)或 the xto(6,41)

x.T*y
x*y[:,None]
Run Code Online (Sandbox Code Playgroud)

当然,我假设您想要逐个元素相乘,而不是np.dot矩阵乘积。