numpy广播机制介绍

news2024/11/29 6:27:35

广播

广播机制的意义:广播描述了在算术运算期间NumPy如何处理具有不同形状的数组。受某些约束条件的限制,较小的数组会在较大的数组中“广播”,以便它们具有兼容的形状。

在对两个数组进行操作时,NumPy按元素对它们的形状进行比较。下面用两个shape(4,3)的数组计算实例进行演示说明。

在这里插入图片描述
上面的两个shape(4,3)的数组计算很好理解,就是按照规则把对应位置上的元素进行计算,得到计算结果。下面再进行广播机制下的计算。广播机制是自动的,当满足可广播条件时,就会自动的进行广播计算。所以并不需要提前设置参数。

在这里插入图片描述
根据结果看出,两次计算是等价的。本次进行计算的两个数组的shape是不一样的,shape(arr1)=(4,3)、shape(arr2)=(3, )。那么广播机制就是用补齐的方法,把两个数组补成shape一致进行计算,用一个可视化图帮助理解,如下图所示。

在这里插入图片描述
NumPy按元素对它们的形状进行比较。比较的过程是从尾随维度(从内到外)开始的。如上面示例中,shape(arr2)=(3, )满足可广播成然后shape(arr1)=(4,3)的条件,所以arr2就会沿着轴0上进行广播,广播成同一形状后完成计算。广播的方式也不是在固定轴上的,再继续尝试下不同形状的数组,可以比较出效果。

在这里插入图片描述
这里的arr1的shape(4,3),arr2的shape(4,1),它们都是二维的,但是第二个数组在1轴上的长度为1,所以需要沿着轴1轴方向进行广播。广播可视化效果如下图中所示。当然也适用在更多维的数组中。

在这里插入图片描述
在这里插入图片描述
得出了计算结果,所以相差多维也依然是可行的,再看下这次广播都做了哪些事情。广播计算是以广播维数小的数组以适应维数大的数组进行计算,维数大的数组是这样的。

在这里插入图片描述
这里arr2进行了3次广播具有了和arr1相同的形状,如上图所示。

通过多次的尝试可以发现,任何形状的任意数量的数组可以一起广播的定义:满足其广播后的数组具有相同数量的维度,每个维度的长度是公共长度或1。当然,如果我们进行广播的数组的形状不同,那么广播的顺序也不同。

总结

本次分享通过示例演示说明了NumPy中的广播机制的计算原理和计算的效果。通过多次的尝试也发现进行广播计算时数组需要满足其广播后的数组具有相同数量的维度,每个维度的长度是公共长度或1的条件。

谢谢浏览,文中若有错误之处,还请不吝赐教。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793031.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE5.1移动端PreintegratedSkinBxDF解析

Part 1 头文件 MobileBasePassPixelShader.usf 主要看Main函数: #if MOBILE_MULTI_VIEWResolvedView ResolveView(BasePassInterpolants.MultiViewId); #elseResolvedView ResolveView(); #endif这玩意Shader文件找不到,感觉是个全局变量的东西。万幸…

【JDK新特性】必会_Stream API

【必看】原创声明:转载请注明作者 & 文章来源:都在用Stream流? ​​​​​​​ hello,我是小索奇,这次讲解JDK 8新特性的重点!Stream流,到后期学习框架时候你会发现大量的Stream流出现&…

波奇学C++:写实拷贝,_buf数组

我们知道当自定义对象如果在堆上开空间,那么拷贝构造时会深拷贝,深拷贝会加大内存开销,用写实拷贝(也叫延迟拷贝)可以在深浅拷贝中取得平衡。 浅拷贝问题: 析构两次 一个对象修改会影响另一个 用引用计数来解决析构问题 拷贝构造时…

商品库存管理系统设计与实现(Vue+SpringBoot+MySQL)

一、项目背景 当今,我国科技发展日新月异,各类企业迅速崛起,商品类型日益繁多,产品数量急剧增加,企业经营模式越来越多样,信息处理量不断加大,对库存管理提出了更高的要求。通过本系统&#xff…

[详细教程+渠道对接+实战陪跑社区]抖音超火小说推文新玩法

科思创业汇 大家好,这里是科思创业汇,一个轻资产创业孵化平台。赚钱的方式有很多种,我希望在科思创业汇能够给你带来最快乐的那一种! 本人为科思创业汇,分享网络项目案例! 是啊,公益活动又来…

白话机器学习笔记(二)学习分类

分类用图形来解释,把他想象为有大小有方向带箭头的向量。 设权重向量为 w w w,虚线为使权重向量称为法线向量的直线。 直线的表达式为: w ⋅ x 0 w\cdot x0 w⋅x0 (两个向量的内积) 也可写为: w ⋅ x ∑ i 1 n w i x i w 1…

Python(基于Pyusb)与C#(基于LibUsbDotNet)USB通信速度对比

1、实验背景 项目需求:下位机ZYNQ,需设计上位机与其通信,通信协议USB2.0。ZYNQ端固定Buffer长度为16k,即上位机向ZYNQ发送任意数据,ZYNQ每次反馈16k长度buffer。现对Python(基于Pyusb)与C#(基于LibUsbDotNet)的USB通信…

Windows 微信更新内核(小程序框架)的指南

WMPF-PC 更新指引: 准备工作 1. 安装最新微信客户端( https://dldir1.qq.com/weixin/Windows/WeChatSetup.exe ) 2. 在微信在搜索栏输入:showcmdwnd (包括前面冒号) 中输入以下代码以开启 wmpf 新内核版本(已经是现网默认,可以…

STM32+FPGA的导常振动信号采集存储系统

摘 要 : 针 对 工 厂 重 要 设 备 运 输 途 中 可 能 损 坏 的情 况 , 本 文 设计 了一 套 采 用 STM32F103+F&#xff3…

2023年FPGA好就业吗?

FPGA岗位有哪些? 从芯片设计流程来看,FPGA岗位可以分四类 产品开发期:FPGA系统架构师 芯片设计期:数字IC设计工程师、FPGA开发工程师 芯片流片期:FPGA验证工程师 产品维护期:FAE工程师 从行业上来说&#x…

后端Linux软件安装大全[JDK、Tomcat、MySQL、Irzsz、Git、Maven、Redis、Nginx...持续更新中]

文章目录 前言1.软件安装方式2.安装jdk3.安装Tomcat4.安装MySQL5.安装lrzsz6. 安装Git7. 安装Maven8. 安装Redis9. 安装Nginx 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新…

redhat官网下载7.9版本iso

redhat官方地址 https://developers.redhat.com/products/rhel/download 下载前会让你先登录,如果没有账号就需要先去注册账号哟。

骨传导耳机对身体有没有别的危害?骨传导耳机有什么好处?

骨传导耳机对身体有没有别的危害? 在此之前,我们先了解一下骨传导的原理:骨传导就跟它的名字一样通过骨头传声,主要是借助头部颅骨传递到听觉中枢,这种传播方式省略了直接接触耳道和耳膜。打个比方,就是我们…

Java虚拟机——前端编译优化

Java的编译期是有上下文语境影响的,不同语境下可以指不同的过程: 可以是前端编译器,把*.java文件转变成*.class文件的过程。 JDK的Javac、Eclipse JDT中的增量式编译器 可以指Java虚拟机的即时编译器(JIT编译器)在运…

json-server创建静态服务器2

上次写的 nodejs创建静态服务器 这次再来个v2.0 利用json-server很方便就可以实现。 vscode打开文件夹,文件夹所在终端: json-server.cmd --watch db.json 这里视频教程是没有上述命令标红的,但是会报错,具体不详&#xff0c…

DSSAT模型教程

详情点击链接:R语言与作物模型(DSSAT模型)教程 前言 随着基于过程的作物生长模型(Process-based Crop Growth Simulation Model)的发展,R语言在作物生长模型和数据分析、挖掘和可视化中发挥着越来越重要的…

基于 Jmeter 的轻量级云压测平台的原理与实现

目录 前言: 背景 云压测平台要解决什么问题 云压测平台为什么要自己实现 实现语言及内核 开发语言 Jmeter 的优缺点 Jmeter 压测启动的方式 从需求看实现 核心需求 抛弃的需求 1:在线生成测试脚本 抛弃的需求 2:在线监控服务器指…

HANA学习笔记

1、安装 准备安装介质,我这儿用的是HANA2.00.059.00,注意会用到三个lib包和saptune,提前准备好。 执行./hdblcm开启数据库安装,过程中会涉及到需要用户设置一些参数,按照自己需求设置即可。 安装完成会生成一个安装日…

被泼冷水后,谁能超越微服务?

历史总会重演。一切刚过去的,又会被重新提起。开源项目Codename One的联合创始人Shai,曾是Sun Microsystems开源LWUIT项目的共同作者,参与了无数开源项目。作为最早一批Java开发者,最近感慨道:单体,又回来了…

oracle查询符号隔开的字段中是否存在某项

CREATE OR REPLACE FUNCTION FIND_IN_SET_BY_COMMA(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 : ,) -- 用什么分隔符这里改成什么 RETURN NUMBER IS l_idx number:0; -- 用于计算piv_str2中分隔符的位置 str varchar2(500); -- 根据分隔符截取的子字符串…