加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Numpy 数组运算与广播

发布时间:2023-07-01 15:14:18 所属栏目:教程 来源:
导读:对数组的算术运算通常在相应的元素上进行。 如果两个阵列具有完全相同的形状,则这些操作被无缝执行,这一小节将通过数组的运算来展示广播的一些特征。

1. 常见的两种广播途径
1.1 相同大小的数组计算
如果两个
对数组的算术运算通常在相应的元素上进行。 如果两个阵列具有完全相同的形状,则这些操作被无缝执行,这一小节将通过数组的运算来展示广播的一些特征。

1. 常见的两种广播途径
1.1 相同大小的数组计算
如果两个数组的维度完全一致,那么运算过程是两个数组相应元素的逐个计算。

案例
定义两个完全一致的数组:

arr0 = np.array([[, , ], [, , ]])arr1 = np.array([[, , ], [, , ]])
查看数组结构:

arr0
out:array([[, , ],[, , ]])arr1
out:array([[, , ],   [, , ]])
查看加法运算的结果:

arr0 + arr1
out:array([[ ,  ,  ],   [ , , ]])
查看乘法运算的结果:

arr0 * arr1
out:array([[ , , ],   [, , ]])
可以看到,如果数组的维度一致,那么广播则是对应位置的元素运算。

1.2 数组与标量的计算
广播机制的存在,允许运算发生在不同维度的数组之间,其中最典型的场景,是数组的标量的计算。所谓的标量,我们可以简单地将之视为是0维的数组。

案例
对于加法运算:

arr0 + out:array([[ ,  ,  ],   [ , , ]])
对于乘法运算

arr0 * out:array([[ , , ],   [, , ]])
对于幂运算:

arr0 ** out:array([[   ,   ,  ],   [, , ]], dtype=int32)
可以发现,对于上述效果,是数组每个元素分别与标量进行运算的结果。

直观地,我们发现,标量在这个二维数组上发生了传播(广播),标量沿着数组的两个维度扩散,直至扩散的结果和待计算的二维数组一致,最后进行计算。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章