首页 > 编程语言 >python numpy 中的广播操作

python numpy 中的广播操作

时间:2023-09-15 09:35:31浏览次数:39  
标签:python 大小 广播 np 数组 维度 numpy size

这辈子也学不会 numpy。

Python中的广播(broadcasting)是一种用于在不同形状的数组之间执行二进制操作的机制,使得它们的形状可以兼容,并且能够按照一定的规则进行元素级操作。这个机制允许你在不显式复制数据的情况下,对形状不同的数组进行操作,这可以节省内存和提高代码的效率。

广播的原理基于以下规则:

  • 如果两个数组的维度不同,将维度较小的数组进行扩展,使得它的维度与较大的数组相匹配。扩展时会在维度较小的数组的前面(左侧)添加新的维度,这些维度的大小为1。

  • 如果两个数组的维度相同,但某些维度的大小不同,将大小为1的维度扩展为匹配较大数组的大小。

  • 如果在某个维度上两个数组的大小都不相等且不为1,那么广播将无法执行,会引发错误。

广播的目的是使得两个数组在进行元素级操作时具有兼容的形状,这样可以将相应的元素一一对应起来进行操作,而不需要显式复制数据。

np.newaxis 可以帮助你在特定位置添加大小为 \(1\) 的维度。

如果要给一个训练集一个测试集求 \(L_2\) 距离,不允许使用任何 for loop。它的写法是 dists=np.sqrt(np.sum((X[:,np.newaxis]-X_train)**2,axis=2))

原理就是先把原来大小为 \([N,picture\_size]\) 的图片添加维度变成 \([N,1,picture\_size]\) 。这下子来发广播,广播的时候大小为 \([M,picture\_size]\) 的 X_train 首先在左边添加一维,大小变成 \([1,M,picture_size]\)

接下来根据广播的原理 \([N,1],[1,M]\) 统一变成 \([N,M]\),然后就可以对位操作了。完全无法深入理解如何广播,都说广播比 for loop 快,我不会广播只能写出来不能利用并行计算的废物代码了。

标签:python,大小,广播,np,数组,维度,numpy,size
From: https://www.cnblogs.com/yspm/p/NumpyBroadcasting.html

相关文章

  • 基于Python+tkinter实现一个简易计算器桌面软件
    你是否想过自己能够开发一个桌面小工具?如果答案是“是”,那么你来对地方了!今天,我们要一起使用Python中的tkinter库,来创建一个简易的桌面计算器。1.为什么选择tkinter?tkinter是Python的标准GUI库。对于初学者来说,它非常友好,因为它提供了大量的预制部件,例如按钮、文本框等,这让开发......
  • gopup:Python公开数据仓库
    GoPUP支持Python3.7+,旨在使获取数据尽可能方便,主要用于学术研究目的。GoPUP项目所采集的数据皆来自公开的数据源,不涉及任何个人隐私数据和非公开数据。同时本项目提供的数据接口及相关数据仅用于学术研究,任何个人、机构及团体使用本项目的数据接口及相关数据请注意商业风险。......
  • python实现电影院座位预约
    功能需求用户进入电影院座位预约系统后,系统会给用户四个模块:预约座位,取消预约,查看预约情况,退出系统。功能分析1:定义一个主函数,用于用户进入预约系统后,供用户选择模块2:分别定义两个函数,座位预约函数和座位取消预约函数3:座位预约函数和取消预约函数需要通过用户输入的行数和列数费别......
  • 个人项目:Python实现简易论文查重
    这个作业属于哪个课程计科1/2班这个作业要求在哪里个人项目这个作业的目标按照规定流程完成个人项目,完整体验制作项目制作相关流程,制作简易论文查重系统GitHub作业链接:GitHub作业链接1.PSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)......
  • Python学习笔记-Python文件操作
    文件的编码简介计算机只能识别:0和1,那么我们丰富的文本文件是如何被计算机识别,并存储在硬盘中呢?使用编码技术(密码本)将内容翻译成0和1存入。编码技术即:翻译的规则,记录了如何将内容翻译成二进制,以及如何将二进制翻译回可识别内容。计算机中有许多可用编码:UTF-8GBKBig5等不同的编码,将......
  • python网络爬虫——爬取东方财富网股票数据并分析
     一、选题的背景:股票数据分析是一个非常重要的领域,它可以帮助投资者做出更明智的投资决策。选取这个选题的背景主要有以下几点:1.市场波动:股票市场不断波动,价格的涨跌对投资者来说是一个重要的影响因素。通过对股票数据进行分析,可以揭示市场的走势和各种趋势,帮助投资者更好地......
  • 20230914-python爬取数据写入到excel
    python爬取数据写入到excel1。查看是否安装了相应的插件 piplist2。查看是否安装了  pandas     (安装命令在cmd中安装,pipinstallpandas)3。查看是否安装 openpyxl      pipinstallopenpyxl ####写入excelimportpandasaspddf=pd.DataFra......
  • Python脚本与window命令脚本结合
    前言经常制作各种python脚本处理文件夹里的各种数据数据,但是每次更换一次文件夹就要改一次脚本里的文件路径,这样感觉效率并不高,偶然的一个机会,看到了利用window命令脚本和Python结合,可以搞出类似界面拖拽式输入的方式。操作方式创建一个.cmdwindow命令脚本编写如下代码:@ec......
  • python魔术方法
    python中的魔术方法Python中的魔术方法是特殊命名的方法,它们以双下划线开头和结尾,并具有特殊的用途。以下是Python中常用的一些魔术方法:__getitem__:用于获取对象的索引值对应的值,配合索引操作([])使用。__setitem__:用于设置对象的索引值对应的值,配合索引操作([])使用。__de......
  • Python常用命令总结(一)
    Python语言特点开源、免费面向过程、面向对象、交互式编程面向过程:以事情或解决问题的过程为中心,主要考虑解决问题的思路和步骤面向对象:以事务为中心,主要考虑解决问题时涉及的事务的特征和行为获取键盘信息input()在终端显示信息print()整数类型int浮点类型float布尔类型bool字......