深入理解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的streamplot使用及说明

    Python的streamplot使用及说明

    这篇文章主要介绍了Python的streamplot使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python实现的读写json文件功能示例

    Python实现的读写json文件功能示例

    这篇文章主要介绍了Python实现的读写json文件功能,结合实例形式分析了Python针对json文件进行读写的常见操作技巧与注意事项,需要的朋友可以参考下
    2018-06-06
  • 详解python中静态方法staticmethod用法

    详解python中静态方法staticmethod用法

    本文主要介绍了python中静态方法staticmethod用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Python如何将CSV文件转JSON文件

    Python如何将CSV文件转JSON文件

    这篇文章主要给大家介绍了关于Python如何将CSV文件转JSON文件的相关资料,可以使用Python内置的csv和json模块来实现将csv文件转为json的操作,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • python主要用于哪些方向

    python主要用于哪些方向

    在本篇文章里小编给大家整理了一篇关于python用于的方向的相关文章,有需要的阅读下吧。
    2020-07-07
  • Django如何重置migration的几种情景

    Django如何重置migration的几种情景

    这篇文章主要介绍了Django如何重置migration的几种情景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Python中JSON数据处理的完整指南

    Python中JSON数据处理的完整指南

    本文将把目光投向现实世界最通用的数据语言——JSON,API、配置、数据库,处处都有它的身影,五分钟掌握 Python 内置 json 模块,读写解析一气呵成
    2025-08-08
  • Python3安装requests库的步骤及使用示例和常见问题

    Python3安装requests库的步骤及使用示例和常见问题

    Python3的requests库是处理HTTP请求最常用的工具之一,它简化了与Web服务的交互,让开发者能更专注于业务逻辑,而非底层网络细节,这篇文章主要介绍了Python3安装requests库的步骤及使用示例和常见问题,需要的朋友可以参考下
    2026-06-06
  • 基于python编写一个车型识别小程序

    基于python编写一个车型识别小程序

    基于Python制作一个车型识别小程序,可用于拍照识车,根据拍摄照片,快速识别图片中车辆的品牌型号,文章通过代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2023-10-10
  • Python 函数简单易理解版

    Python 函数简单易理解版

    本文将用简单易解的描述方法对Python 函数做一个详情介绍,感兴趣的朋友可以参考下文
    2021-08-08

最新评论