深入理解numpy广播机制
更新时间:2023年09月15日 11:35:18 作者:UQI-LIUWJ
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式,本文深入理解numpy广播机制,具有一定的参考价值,感兴趣的可以了解一下
1 广播规则
- 如果两个数组的维度数不相同,那么小维度数组的形状会在左边补1。
- 如果两个数组在某个维度上的大小不匹配,并且其中一个数组在该维度上的大小为1,则该数组会沿着这个维度扩展以匹配另一个数组的大小。
- 如果在任何维度上大小都不匹配并且没有一个大小为1,那么会引发错误。
2 举例
2.1 基本广播
import numpy as np a = np.array([1, 2, 3]) b = 2 print(a * b) # =[2 4 6]
在这里,b
被广播到与 a
相同的大小,然后进行乘法。
2.2 维度不同
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) b = np.array([1, 0, 1]) print(a + b) ''' [[ 2 2 4] [ 5 5 7] [ 8 8 10]] '''
- a的维度是[3,3],b是3
- b的维度首先在左边补1(变成[1,3])
- [[1,0,1]]
- 然后b行复制,变成[3,3]
- [[1,0,1], [1,0,1], [1,0,1]]
- 然后两个[3,3]的矩阵相加即可
2.3 两个数组都需要广播
a = np.array([[1], [2], [3]]) b = np.array([1, 2, 3]) print(a + b) ''' [[2 3 4] [3 4 5] [4 5 6]] '''
在这里,a
的形状是 (3,1),b
的形状是 (3,)。
a
被广播到 (3,3),b
也被广播到 (3,3),然后它们进行加法。
2.4 不兼容的形状
a = np.array([1, 2, 3]) b = np.array([1, 2]) print(a + b) # 这将引发错误,因为形状不兼容
到此这篇关于深入理解numpy广播机制的文章就介绍到这了,更多相关numpy广播内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python+pywinauto+lackey实现PC端exe自动化的示例代码
这篇文章主要介绍了python+pywinauto+lackey实现PC端exe自动化的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-04-04python关于os.walk函数查找windows文件方式
这篇文章主要介绍了python关于os.walk函数查找windows文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-08-08使用wxPython和ECharts实现生成和保存HTML图表
wxPython是一个基于wxWidgets的Python GUI库,ECharts是一个用于数据可视化的JavaScript库,本文主要为大家介绍了如何使用wxPython和ECharts库来生成和保存HTML图表,感兴趣的可以学习一下2023-08-08python绘制子图技巧之plt.subplot、plt.subplots及坐标轴修改
一个图片里边绘制多个图像是绘图中的常见需求,下面这篇文章主要给大家介绍了关于python绘制子图技巧之plt.subplot、plt.subplots及坐标轴修改的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2022-05-05
最新评论