【python】ndarray的广播功能

news2024/9/21 20:29:26

目录

0.环境

1.背景简介

2.ndarray的广播功能

2.1概念

2.2意义

2.3使用前提

2.4举例

2.5完整代码


0.环境

windows + jupyter notebook验证代码

1.背景简介

我是在查询【ndarray和array的区别】时,看到了“广播功能”这个词,之前只在网络的相关定义上了解广播这个词,但没想到,数组上也有应用,但其完全不是一种意思,特此记录一下使用方式。

简介一下ndarray和array的区别:

在Python中,array是Python标准库中提供的一种数组类型,而ndarray是NumPy库中提供的一种多维数组类型。虽然它们都可以用来存储数值数据,但它们之间存在一些区别:
1)array类型只能存储一维数组,而ndarray类型可以存储多维数组。
2)array类型只能存储相同类型的数据,而ndarray类型可以存储不同类型的数据。
3)ndarray类型支持广播功能,这使得可以对不同形状的数组进行数学运算。array类型不支持广播功能。
4)ndarray类型提供了许多用于数学和科学计算的函数和方法,例如线性代数、傅里叶变换、随机数生成等等。array类型只提供了一些基本的数组操作方法。

2.ndarray的广播功能

2.1概念

当对两个形状不同的数组进行算术运算时,例如加法、减法、乘法和除法,NumPy会自动将较小的数组广播(broadcast)到较大数组的形状,以匹配它们的形状。这种自动广播的功能被称为广播(broadcasting)。

2.2意义

这意味着,您可以对不同形状的数组进行数学运算,而无需显式地扩展数组的形状或使用循环来匹配它们的形状。这使得在NumPy中进行数学运算更加方便和高效。

2.3使用前提

数组中的元素(元组)的维数需要相等,比如下面的例子,多维数组中共有三个元组,[1,2,3]、[4,5,6]、[7,8,9],每个里面都是三个元素,那么与之相计算的数组,也必须是三个元素。一旦a中增加元组的维数([1.2.3]变成[1,2,3,4]),或者b中增加元组的维数(变成[10,20,30,40]),都会导致编译器的报错。

2.4举例

假设有一个形状为(3, 3)的数组和一个形状为(1, 3)的数组a和b:

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

b = np.array([[10, 20, 30]])

可以使用广播功能将数组b广播到与数组a相同的形状,然后进行数学运算:

c = a + b

print(c)

结果:

import numpy as np

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

b = np.array([[10, 20, 30]])
c = a + b
print(c)

解释:在这个例子中,数组b被广播到一个形状为(3, 3)的数组,以匹配数组a的形状。然后,对两个数组进行了加法运算。

2.5完整代码

import numpy as np

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

b = np.array([[10, 20, 30]])
c = a + b
print(c)

--END--

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

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

相关文章

分布式版本控制系统Git介绍

Git 是一款开源的分布式版本控制系统,具备分布式、轻量级分支、强大的协作能力以及适用于大小项目的版本管理。本文简要介绍Git工具的特性、Git中的对象以及分支管理,以加深了解。 1、版本控制系统介绍 版本控制是指对软件开发过程中各种程序代码、配置…

Docker是什么以及docker的常用命令

Docker简介 Docker是一种开源的容器化平台,用于构建、部署和运行应用程序。它允许开发人员将应用程序及其所有依赖项打包到一个称为"容器"的独立单元中。这个容器可以在任何支持Docker的环境中运行,无论是开发人员的本地机器、虚拟机还是云服务…

Bert

参考资料: 《机器学习》李宏毅 1 Bert 是怎么运作的? Bert 是一种自监督学习(Self-supervised Learning)模型。Bert 的目标是 pre-train 出一个能够理解语义的多功能语言模型,使之能够在特定任务上只学习较少的带标…

快速上手 vercel,手把手教你白嫖部署上线你的个人项目

壹 ❀ 关于 vercel Vercel 是一个云服务平台,支持静态网站(纯静态页面,比如现在base utils 文档也是基于vercel)和动态网站的应用部署、预览和上线。如果你用过 GitHub Pages ,那么心里可能不会太陌生,但你…

Web3 在Truffle项目中编写出自己的第一个solidity智能合约

好 上文Web3本地搭建truffle智能合约开发环境我们在本地搭起了一个 Truffle 项目 然后 我们说明项目中文件的用途 然后 我们还是通过ganache模拟一个本地的区块链环境 然后打开我们搭建的Truffle项目 首先 我们第一个要看的肯定是truffle-config.js 肯定要先配好连接的环境 我…

UDP 协议【传输层协议】

文章目录 1. 传输层1.1 TCP 与 UDP 2. 端口号2.1 端口号标识进程2.2 通过IP地址、端口号、协议号进行通信识别2.3 协议号2.4 端口号的范围2.5 常用命令netstatiostatpidof 2.6 存疑 3. UDP 协议3.1 地位3.2 报头的分离和交付3.3 UDP 报文的格式3.4 UDP 数据封装和分用数据封装数…

rk3288中apk串口打开失败,selinux权限问题

apk打开串口失败 报错信息: 07-03 17:05:27.030 4582 4582 W jw.ComAssistant: type1400 audit(0.0:56): avc: denied { read } for name"ttyS2" dev"tmpfs" ino7704 scontextu:r:untrusted_app:s0:c512,c768 tcontextu:object_r:ttyS2_dev…

《YOLOv8魔术师》专栏介绍 CSDN独家改进创新实战专栏目录

💡💡💡Yolov8魔术师,独家首发创新(原创),持续更新,适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,轻松带你上手魔改网络 &…

xml合并

from xml.etree.ElementTree import ElementTree, Element, parseimport xml.etree.ElementTree as ETimport osimport shutilhole_path ./Annotationsarm_path ./Annotations1out_path ./out# 格式化def __indent(elem, level0):i "\n" level*"\t"if…

UE5.2 LyraDemo源码阅读笔记(三)

进入淘汰模式游戏流程 启动游戏,进入流程: 1、进入Lyra游戏第三个体验入口FrontEnd。 2、来到大厅主界面后,点击: Play Lyra > Start A Game >ELIMINATION就会进入到淘汰模式游戏。 看看蓝图和代码,其中的UI流程…

dubbo-admin下载安装教程

目录 1.下载 2.项目结构 3.后端打包 4.前端打包 4.1.node js环境准备 4.2.依赖安装 4.3.启动、打包 1.下载 下载地址: GitHub - apache/dubbo-admin at develop dubbo-admin项目有多个分支,最新版本的dubbo-admin在使用go语言进行重构&#xf…

解决电脑提示vcruntime140_1.dll无法继续执行代码的问题

vcruntime140_1.dll丢失要怎么办?其实很多人都在头疼这个问题,关于dll文件的丢失这事情是时常发生的,因为电脑的杀毒软件有时候会误杀,然后就会导致你的游戏程序都打开不了,你必须要修复好了才行,今天小编就…

统计文本中的数字出现频次

统计文本中的数字出现频次:磁盘上有多个文本文件,统计数据写入excel。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教…

AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘

在使用ddddocr进行图片识别时,报错了: AttributeError: module PIL.Image has no attribute ANTIALIAS 我使用的是Python 3.11,查看一下pillow的版本: print(PIL.__version__)10.0.0 到处百度也没找到原因,最后&am…

IDEA解析Maven依赖过慢

查看Maven配置文件&#xff0c;是否更改为阿里源 maven安装目录/conf/setting.xml 搜索mirrors并在其中添加 <mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/ </url&…

【嘉立创EDA】层次原理图功能使用,或放置复用图块方法

文章路标👉 文章解决问题主题内容小结文章解决问题 1️⃣ 在一些较为复杂的原理图绘制时,常需要使用到复用图块。何为复用图块,笔者摘取ST MB1136设计原理图纸可以较好表述这个功能,如下图所示: [本图摘取自NUCLEO-F103RB设计图纸 sheet 2 of 5] 图中左上角绿色图块为…

探索iPadOS 17的亮点特性:值得关注的新功能揭秘

探索iPadOS 17的亮点特性&#xff1a;值得关注的新功能揭秘 看完在WWDC23上作为久违的“OneMoreThing”亮相的令人兴奋的AppleVisionPro后&#xff0c;是时候看看同样作为重要角色出现在发布会上的iPadOS了。与iOS一样&#xff0c;iPadOS也来到了17时代。除了一年后同步iOS16的…

WinApp自动化测试之WinAppDriver工具简介

前篇文章中&#xff0c;我们讲到了WinApp自动化测试工具的选择&#xff0c;今天我们来简单介绍WinAppDriver工具。 Windows Application Driver (WinAppDriver)是Windows系统上的一个应用程序驱动工具&#xff0c;使用该驱动程序&#xff0c;测试人员能够通过Appium-Python-Cl…

el_table切换行前校验,决定是否可切换

思路&#xff1a;拿到当前点击行并存储比如叫做oldRow&#xff0c;把即将切换行的row与oldRow做对比&#xff0c;校验是否可切换&#xff0c;若校验不可切换&#xff0c;则通过遍历仍选中仍选中oldRow.

python简单实现人脸检测/跟随

import cv2# 加载人脸识别器的模型 face_cascade cv2.CascadeClassifier(cv2.data.haarcascades haarcascade_frontalface_default.xml)# 打开摄像头 cap cv2.VideoCapture(0)# 初始化人脸框位置 prev_faces []# 定义绘制带圆角矩形边框的函数 def draw_rounded_rectangle(…