【Python】numpy广播broadcast与np.newaxis()函数详解

本文详细介绍了Python中的numpy库中广播(broadcast)功能以及np.newaxis函数的使用,包括如何处理形状不同的数组运算、newaxis在增加维度方面的应用,以及广播与newaxis的结合实例,帮助读者理解这两个关键概念在数据处理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Python】numpy广播broadcast与np.newaxis()函数详解

1. 广播 broadcast

广播(broadcast)是Python numpy库中十分常用的功能之一。针对不同形状的数组,依据一定规则进行元素的数学运算,一般是“较小的数据在较大的数组上广播”,以便兼容不同的形状。

计算对象数组形状相同

当计算对象数数组形状相同,不会触发广播功能。
比如下面两个数组进行加法运算:

import numpy as np

a = np.array([[ 4,  7,  9], 
              [10,  2, 10]])
b = np.array([[ 3,  2,  6], 
              [ 8,  1,  5]])
a + b

输出结果如下,每个位置对应元素相加:

array([[ 7,  9, 15],
       [18,  3, 15]])

计算对象数组形状不同

当计算对象数组形状不同时,则会触发广播功能。

广播应用规则: 输入数组具有相同形状,或者其中一个数组某维度的尺寸为1。

如果不满足该规则,那么会抛出异常:ValueError: operands could not be broadcast together。

相同形状的数组运算上面已经说明,那么什么是“其中一个数组某维度的尺寸为1”?

比如下面两个数组:

>>> a = np.array([[ 4,  7,  9], 
...               [10,  2, 10],
...               [ 1,  4,  8]])
>>> b = np.array([[ 3,  2,  6]])
>>> print(a.shape, b.shape)
(3, 3) (1, 3)
>>> a + b
array([[ 7,  9, 15],
       [13,  4, 16],
       [ 4,  6, 14]])

可以看到,输出结果等于下面两个数组a和c相加:

>>> c = np.array([[ 3,  2,  6], 
...               [ 3,  2,  6], 
...               [ 3,  2,  6]])
>>> a + c
array([[ 7,  9, 15],
       [13,  4, 16],
       [ 4,  6, 14]])

也就是说,在计算时,将b在第一个维度上(原维度为1)进行了“拉伸”或者说“复制”,然后与a在元素级别相加。

如果b的第一个维度不为1,就会抛出异常:

>>> d = np.array([[ 3,  2,  6], 
...               [ 1,  4,  7]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值