Python入门教程(五):Numpy计算之广播

本文介绍了Numpy的广播功能,允许不同大小的数组进行运算。广播规则包括:1) 小维度数组在左边补1;2) 沿非匹配维度拓展;3) 不匹配且非1维度则报错。通过广播,可以实现如数组归一化、二维函数图像绘制等操作。文章提供了广播在实际操作中的应用示例,并提及广播适用于所有二元通用函数。
摘要由CSDN通过智能技术生成

点击上方 蓝字 关注我们

广播(broadcasting)是通用函数另一个非常有用的功能,它能够操纵不同大小和形状的数组,这就是我们所说的广播。

01

广播简介

对于同样大小的数组,二元运算符是对相应元素逐个计算,如例1所示。

广播允许这些二元运算符可以用于不同大小的数组。

例1:
import numpy as np
a = np.array([0, 1, 2])
b = np.array([5, 5, 5])
a + b
# array([5, 6, 7])

如例2所示,可以简单地将一个标量(可以认为是一个零维数组)和一个数组相加。这个操作,我们可以认为是将数值5扩展或者重复至数组[5,5,5],然后执行加法。Numpy广播功能的好处是,这种对值的重复实际上没有发生,但是这是一种很好理解的广播模型。

例2:
# 
a + 5
# array([5, 6, 7])

我们也可以把这个原理拓展到更高维度的数组,下面例子展示了一个一维数组和一个二维数组相加的结果。在例3中一个二维数组被拓展了或者被广播了。他沿着第二个维度扩展,拓展到匹配M数组的形状。

例3:
M = np.ones((3, 3))
M


# array([[ 1.,  1.,  1.],
#        [ 1.,  1.,  1.],
#       [ 1.,  1.,  1.]])


M + a
# array([[ 1.,  2.,  3.],
#       [ 1.,  2.,  3.],
#       [ 1.,  2.,  3.]])




以上数组理解起来还比较容易,更复杂的情况涉及到对两个数组的同时广播,如例4所示。

例4:
a = np.arange(3)
b = np.arange(3)[:, np.newaxis]


print(a)
print(b)


# [0 1 2]
# [[0]
#  [1]
#  [2]]


a + b
# array([[0, 1, 2],
#       [1, 2, 3],
# 
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据万花筒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值