深入理解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多线程方法详解

    python多线程方法详解

    大家好,本篇文章主要讲的是python多线程方法详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • 使用Python实现屏幕截图功能的详细教程

    使用Python实现屏幕截图功能的详细教程

    Python使用ImageGrab截图主要依赖于Pillow库(PIL库的一个分支),该库提供了ImageGrab模块来实现屏幕截图功能,以下是一个详细的截图教程,需要的朋友可以参考下
    2025-01-01
  • matplotlib实战之饼图绘制详解

    matplotlib实战之饼图绘制详解

    饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,这篇文章主要为大家详细介绍了如何使用Matplotlib绘制饼图,需要的小伙伴可以参考下
    2023-08-08
  • python numpy 中linspace函数示例详解

    python numpy 中linspace函数示例详解

    这篇文章主要介绍了python numpy 中linspace函数,本文我们通过示例学习了linspace函数,如果你熟悉NumPy,一定也注意到还有np.arange函数,两者最大差异是,linspace能够精确控制终止值终值,而arange能够更直接地控制序列中值之间的增量,需要的朋友可以参考下
    2023-03-03
  • Python实现并行抓取整站40万条房价数据(可更换抓取城市)

    Python实现并行抓取整站40万条房价数据(可更换抓取城市)

    本文主要是以房价网房价信息爬虫为例,对Python实现整站40万条房价数据并行抓取(可更换抓取城市)的方法进行分析介绍。需要的朋友一起来看下吧
    2016-12-12
  • Python Pickling 和 Unpickling 的区别

    Python Pickling 和 Unpickling 的区别

    Python中的Pickling和Unpickling是与数据序列化和反序列化相关的重要概念,本文主要介绍了Python Pickling和Unpickling的区别,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • python 字符串索引取值的实现示例

    python 字符串索引取值的实现示例

    本文主要介绍了python 字符串索引取值的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Python内置函数locals和globals对比

    Python内置函数locals和globals对比

    这篇文章主要介绍了Python内置函数locals和globals对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • django认证系统 Authentication使用详解

    django认证系统 Authentication使用详解

    这篇文章主要介绍了django认证系统 Authentication使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 分享一下如何编写高效且优雅的 Python 代码

    分享一下如何编写高效且优雅的 Python 代码

    这篇文章主要介绍了分享一下如何编写高效且优雅的 Python 代码,需要的朋友可以参考下
    2017-09-09

最新评论