深入理解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 Pivot table透视表使用方法解析

    Python Pivot table透视表使用方法解析

    这篇文章主要介绍了Python Pivot table透视表使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Python实现从概率分布中随机采样

    Python实现从概率分布中随机采样

    这篇文章主要介绍了通过几个机器学习中最常用的概率分布为例,来看看如何从一个概率分布中采样,文章中的代码对我们的工作或学习具有一定价值,感兴趣的朋友可以了解一下
    2021-12-12
  • Django 5种类型Session使用方法解析

    Django 5种类型Session使用方法解析

    这篇文章主要介绍了Django 5种类型Session使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python正则表达中re模块的使用

    Python正则表达中re模块的使用

    这篇文章主要介绍了Python正则表达中re模块的使用,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09
  • 处理Selenium3+python3定位鼠标悬停才显示的元素

    处理Selenium3+python3定位鼠标悬停才显示的元素

    这篇文章主要介绍了Selenium3+python3--如何定位鼠标悬停才显示的元素 ,文中通过简单代码给大家介绍的非常详细,需要的朋友可以参考下
    2019-07-07
  • 解决usageerror: line magic function "%%time" not found问题

    解决usageerror: line magic function "

    这篇文章主要介绍了解决usageerror: line magic function "%%time" not found问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Python实现正则表达式匹配任意的邮箱方法

    Python实现正则表达式匹配任意的邮箱方法

    今天小编就为大家分享一篇Python实现正则表达式匹配任意的邮箱方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python批量从es取数据的方法(文档数超过10000)

    python批量从es取数据的方法(文档数超过10000)

    今天小编就为大家分享一篇python批量从es取数据的方法(文档数超过10000),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python绘制多个曲线的折线图

    python绘制多个曲线的折线图

    这篇文章主要为大家详细介绍了python绘制多个曲线的折线图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • python datetime中strptime用法详解

    python datetime中strptime用法详解

    这篇文章主要介绍了python 中datetime中strptime用法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08

最新评论