文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Numpy广播域是什么

2023-07-05 17:20

关注

这篇文章主要介绍“Numpy广播域是什么”,在日常操作中,相信很多人在Numpy广播域是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Numpy广播域是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

NumPy广播(Broadcast),广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。

不同形状指的是,大小不同当然不是指的维度,但是要求数组各维度的长度相同

例如:

arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])print(arr)arr2 = np.array([1,2,3])

Numpy广播域是什么

arr是4*3的二维数组 arr2 是1*3的一维数组 ,二维数组中的一维数组 长度是3 ,而一维数组的长度也是三,所以只有满足这样的条件才可以进行计算。

如果想要知道他们是如何进行计算的请看下面的图片

arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])print(arr)arr2 = np.array([1,2,3])print(arr2)print(arr*arr2)

Numpy广播域是什么

我们知道arr 和arr 数组的维度是不相同的,如果在普通的运算中,如果我们想对它们元素到元素之间进行相乘或者相加减,显然是不可能的,但是在numpy中是可以对不同维度的数组进行乘除加减操作的,因为numpy中的数组具有广播功能。低维度的数组会扩展到和多维数组相同大小

我们可以这样认为,arr2是一维数组,它和二维数组arr 进行乘法运算,arr2 中的每一元素依次会和二维数组的每一个元素相乘。但是对广播来说不能这样简单认为:

arr2

1

2

3

arr2经过广播后

1

2

3

1

2

3

1

2

3

1

2

3

arr数组

0

2

6

3

8

15

6

14

24

9

20

22

广播操作具有延伸性,它会将低维度的数组,延伸成为和高维度一样大小的数组,然后在对他们进行乘除加减操作。

有的朋友会问,二维数组乘以一维数组它们得到的结果是多大维度的。

Numpy广播域是什么

显然结果是二维数组,如果测试该数组的维度,请将该数组点上一个 ndim 方法名 arr.ndim

NumPy广播的规则

刚才看到 输入数组 arr 是 4 x 3 arr2 是 1 x 3 ,输出数组 result 是 4 x 3 最大值是不是 4 x 3 啊

arr 是二维,arr2是一维,我们需要拿arr中的一维数组和arr2比较观察他们的长度(行元素个数)是否相同,或者arr2中只有一个元素,才能进行计算否则会报错

两个输入数组对应维度的元素个数相同:

arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])arr2 = np.array([2,3,4])

低维度的元素个数(长度)为 1

arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])arr2 = np.array([2])

报错案例: 低维度的数组多一个元素或者少一个元素都不行,但排除元素个数为1的可能性

低维度数组的元素少一个arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])arr2 = np.array([2,3])报错提示:ValueError: operands could not be broadcast together with shapes (4,3) (2,) 低维度数组的元素多一个arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])arr2 = np.array([2,3,4,5])报错提示:ValueError: operands could not be broadcast together with shapes (4,3) (4,) 正确 : 低维度数组维度的值(元素个数)为1个arr = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])arr2 = np.array([3])result = arr*arr2结果:[[ 1  2  3]            arr [ 4  5  6] [ 7  8  9] [10 11 12]] [3]                    arr2  [[ 3  6  9]           result [12 15 18] [21 24 27] [30 33 36]]

当输入数组的某个维度的长度为 1 时,沿着此维度运算时都用此维度上的第一组值。

简单理解:对两个数组,分别比较他们的每一个维度(若其中一个数组没有当前维度则忽略),满足:

numpy中的数组具有广播性,广播性就是延伸性,比较低的维度数组会延伸到和维度较大的数组一样的大小,这里的低维度指的是一维数组,如果是其它维度就要做操作的两个数组的维数相同和各维度的长度是否相同不同则不可以进行广播操作。numpy只针对一维数组且各维度的长度要相同,或者其中一个数组只有一个元素。

到此,关于“Numpy广播域是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯