numpy - 不同形状的 NumPy 数组的元素乘法
问题描述
当我使用numpy.multiply(a,b)
将 numpy 数组与形状相乘时,(2, 1),(2,)
我得到一个 2 x 2 矩阵。但我想要的是逐元素乘法。
我不熟悉numpy的规则。谁能解释这里发生了什么?
解决方案
当在两个不同维度的数组之间进行元素操作时,NumPy 将执行广播。在您的情况下,Numpy 将b
沿以下行广播a
:
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]]
推荐阅读
- html - 为什么我的实际输出和开发人员工具布局不同?
- python - Scrapy 图像返回无
- postgresql - 带有 LAG() 的 PostgreSQL 更新查询返回“错误:用作表达式的子查询返回多行”
- c++ - RPi 上 C++ 中面向对象编程的性能
- angular - Angular - 直接在模板中使用输出事件发射器是一种好习惯吗?
- html - 如何在 HTML 中为段落着色?
- mysql - 我不明白两个查询之间 EXPLAIN 输出的区别。唯一的区别是 MYSQL 中的 LEFT JOIN 与 INNER JOIN
- drupal - Drupal 升级后 Drupal 模块丢失
- eclipse - 在 STS 中安装 Mac os Lombok
- javascript - 从地图文件中获取上下文