day16 学习笔记

文章目录

  • 前言
  • 一、广播机制
  • 二、数组遍历
    • 1.for循环
    • 2.nditer函数
  • 三、数组操作
    • 1.reshape函数
    • 2.flat属性
    • 3.flatten函数
    • 4.revel函数
    • 5.数组转置
    • 6.升维与降维
    • 7.数组的连接与分割
    • 8.数组运算


前言

  • 通过今天的学习,我进一步掌握了更多numpy的语法知识

一、广播机制

  • 广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式
  • 核心是对形状较小的数组,在维度为1的横向或纵向上进行一定次数的重复,使其与形状较大的数组拥有相同的维度
a = np.array([[1, 2, 3], [4, 5, 6]])  # 形状: (2, 3)
b = np.array([10, 20, 30])            # 形状: (3,)
c = a + b
print(c)

tips:b是一维数组,可以暂时看做一行三列,通过广播机制变为两行三列即可与a相加

二、数组遍历

1.for循环

  • 使用for循环遍历数组的第一维度,可以理解为拆开数组第一层括号的结果
arr = np.array([[1, 2, 3], [4, 5, 6]])
for i in arr:print(i)

2.nditer函数

  • nditer函数一般用于遍历多维数组中的每一个元素
  • 相较于flat属性可以进行更加复杂的遍历操作,如修改元素,以及指定遍历顺序等等
for i in np.nditer(arr,order="c"):print(i,end=",")
  • 使用flags参数指定迭代器额外行为;multi_index: 返回每个元素的多维索引。external_loop: 返回一维数组而不是单个元素
it = np.nditer(arr, flags=['multi_index'])
for x in it:print(f"元素: {x}, 对应索引: {it.multi_index}")
print(" ")
for x in np.nditer(arr, flags=['external_loop'], order='f'):print(x)

三、数组操作

1.reshape函数

  • 返回一个新数组,要求与原数组的元素个数保持一致
  • 新数组是原数组的视图,对新数组进行修改会直接影响原数组
arr = np.array([1,2,3,4,5,6])
arr_1 = arr.reshape((2,3))
arr_2 = arr.reshape((3,-1)) #-1作为占位符,numpy自动计算
arr_3 = arr.reshape((2,3,1)) #可以理解为分为2个二维数组,每个二维数组是三行一列

2.flat属性

  • 与nditer函数有相似的功能,用于行以优先遍历数组元素,返回一个一维迭代器
arr = np.array([1,2,3,4,5,6])
for i in arr.flat:print(i)
print(arr.flat)

3.flatten函数

  • 将多维数组转化为一维数组
  • 返回的是原数组的深拷贝,修改并不会影响原数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
flat_arr = arr.flatten(order='C') #按行优先顺序展开
print(flat_arr)
flat_arr[-1] = 7
print(arr)

4.revel函数

  • 将多维数组转化为一维数组
  • 返回的是原数组的视图,修改会直接影响原数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
ravel_arr = arr.ravel() #按行优先顺序展开
print(ravel_arr)
ravel_arr[-1] = 7
print(arr)

5.数组转置

  • 在numpy中数组的转置与数学意义上的转置相同,可以使用transpose函数或者T属性
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.transpose(arr))
print(arr.T)

6.升维与降维

  • 使用expand_dims和squeeze函数即可对数组进行升维和降维
a = np.array([1, 2, 3])
b = np.expand_dims(a, axis=0) #行方向升维
print(b)
c = np.expand_dims(a, axis=1) #列方向升维
print(c)c = np.array([[[1, 2, 3]]])
d = np.squeeze(c, axis=0)
print(d)
e = np.squeeze(c, axis=1)
print(e)
try:f = np.squeeze(c, axis=2) #指定删除的维度值必须为1,否则将会报错
except:print("error")
g = np.squeeze(c, axis=None) #若为None,则删除数组维度中所有为 1 的项
print(g)

tips:降维要求降低的维度数必须为1,否则报错;如果不指定降维的轴,则会对所有维度为1的轴进行降维

7.数组的连接与分割

  • 使用hstack和vstack函数对数组进行垂直,水平拼接
  • 要求使用时对应维度的形状相同
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5], [6]])
result = np.hstack((arr1, arr2)) #竖直拼接
print(result)arr1 = np.array([1, 2, 3])
arr2 = np.array([[4, 5, 6],[7,8,9]])
result = np.vstack((arr1, arr2)) #水平拼接
print(result)
  • 使用hsplit和vsplit函数对数组进行垂直,水平分割
  • 需要指定分割处的索引
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
result = np.hsplit(arr, [1, 3]) #在索引1,3处分割
print(result[2])
result = np.vsplit(arr, [1]) #在索引1处分割
print(result[0])

8.数组运算

  • 对于二维数组,np.dot相当于矩阵乘法
  • 对于一维数组,np.dot相当于向量点积
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
result = np.dot(a, b)
print(result)
  • np.lianlg.det用于求行列式(要求方阵)
a = np.array([[1, 2], [3, 4]],dtype=int)
det_a = np.linalg.det(a) #计算行列式,要求方阵
print(det_a)

THE END

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

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

相关文章

使用FastExcel时的单个和批量插入的问题

在我们用excel表进行插入导出的时候,通常使用easyexcel或者FastExcel,而fastexcel是easy的升级版本,今天我们就对使用FastExcel时往数据库插入数据的业务场景做出一个详细的剖析 场景1 现在我们数据库有一张组织表,组织表的字段…

Cannot find a valid baseurl for repo: centos-sclo-sclo/x86_64

​ rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpmyum clean allyum macache fast​ 编辑配置文件 /etc/yum.repos.d/zabbix.repo and enable zabbix-frontend repository. [zabbix-frontend]...enabled1... 下载相关…

AI基础02-图片数据采集

上篇文章我们学习了文本的数据采集,今天主要了解一下图片数据采集的方法。图片采集方法通常有网页采集和实时采集(传感器采集)两种。我们学习一下如何利用python 工具和笔记本计算机摄像头进行图片数据的实时采集。 1)cv2库简介 …

【CSS】相对位置小练习

要求&#xff1a; 成果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>相对位置小练习</title><link rel"stylesheet" href"./css/style.css…

外设的中断控制

如ADC、SPI、I2C、TIM等使用STM32 HAL库时的中断函数调用方式和UART非常类似&#xff0c;都有底层直接使能中断和上层库函数管理两种方式。下面详细说明几种典型外设&#xff1a; 一、ADC外设 &#xff08;1&#xff09;直接使能中断&#xff08;底层控制&#xff09;&#xf…

网络传输优化之多路复用与解复用

一、基本概念 多路复用 发送端将来自多个应用或进程的数据流合并到同一物理信道中传输的过程。核心目的是提高信道利用率&#xff0c;减少资源浪费。例如&#xff0c;多个网络应用&#xff08;如浏览器、邮件客户端&#xff09;通过不同端口将数据封装为报文段&#xff0c;共享…

【软考-架构】10.1、软件工程概述-CMM-软件过程模型-逆向工程

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 软件工程基础知识软件工程概述能力成熟度模型能力成熟度模型CMM能力成熟度模型集成CMMI &#x1f4af;考试真题第一题第二题 软件过程模型瀑布模型&#xff08;SDLC&#…

python将整个txt文件写入excel的一个单元格?

要将整个txt文件写入Excel的一个单元格&#xff0c;可以使用Python的openpyxl库来实现。以下是一个简单的示例代码&#xff1a; from openpyxl import Workbook# 读取txt文件内容 with open(file.txt, r) as file:txt_content file.read()# 创建一个新的Excel工作簿 wb Work…

车载以太网网络测试 -25【SOME/IP-报文格式-1】

1 摘要 本专题接着上一专题对SOME/IP进行介绍&#xff0c;主要对SOME/IP报文格式以及定义的字段进行详细介绍&#xff0c;有助于在实际项目过程中对SOME/IP报文的理解。 上文回顾&#xff1a; 车载以太网网络测试 -24【SOME/IP概述】 2 SOME/IP-报文格式 通过上个专题介绍&a…

【区块链安全 | 第五篇】DeFi概念详解

文章目录 DeFi1. DeFi 生态概览2. 去中心化交易所&#xff08;DEX&#xff09;2.1 AMM&#xff08;自动做市商&#xff09;模型2.2 订单簿模式&#xff08;现货交易&#xff09; 3. 借贷协议3.1 Aave3.2 使用闪电贷&#xff08;Flash Loan&#xff09; 4. 稳定币&#xff08;St…

问题:md文档转换word,html,图片,excel,csv

文章目录 问题&#xff1a;md文档转换word&#xff0c;html&#xff0c;图片&#xff0c;excel&#xff0c;csv&#xff0c;ppt**主要职责****技能要求****发展方向****学习建议****薪资水平** 方案一&#xff1a;AI Markdown内容转换工具打开网站md文档转换wordmd文档转换pdfm…

代码随想录刷题day53|(二叉树篇)106.从中序与后序遍历序列构造二叉树(▲

目录 一、二叉树理论知识 二、构造二叉树思路 2.1 构造二叉树流程&#xff08;给定中序后序 2.2 整体步骤 2.3 递归思路 2.4 给定前序和后序 三、相关算法题目 四、易错点 一、二叉树理论知识 详见&#xff1a;代码随想录刷题day34|&#xff08;二叉树篇&#xff09;二…

前端知识点---用正则表达式判断邮箱(javascript)

// 全面的正则&#xff08;兼容大多数情况&#xff09; const emailRegex /^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$/;// 或直接使用浏览器内置验证 <input type"email" required>/&#xff1a;正则表达式的起始和结束标志。 ^&#xff1a;匹配字符串的…

PyQt6实例_批量下载pdf工具_界面开发

目录 前置&#xff1a; 代码&#xff1a; 视频&#xff1a; 前置&#xff1a; 1 本系列将以 “PyQt6实例_批量下载pdf工具”开头&#xff0c;放在 【PyQt6实例】 专栏 2 本系列涉及到的PyQt6知识点&#xff1a; 线程池&#xff1a;QThreadPool,QRunnable&#xff1b; 信号…

在word中使用zotero添加参考文献并附带超链接

一、引言 在写大论文时&#xff0c;为了避免文中引用与文末参考文献频繁对照、修改文中引用顺序/引用文献时手动维护参考文献耗易出错&#xff0c;拟在 word 中使用 zotero 插入参考文献&#xff0c;并为每个参考文献附加超链接&#xff0c;实现交互式阅读。 版本&#xff1a…

Selenium文件上传

在 Web 自动化测试中,文件上传是一项常见的任务。不同的网站和前端技术可能导致上传方式有所不同,因此需要采用不同的方法进行处理。 方法 1:使用 send_keys() 直接上传(最常用) 适用场景: 页面中 有标准的 <input type="file"> 标签。 不需要弹出 Wind…

线程概念与控制(中)

线程概念与控制&#xff08;上&#xff09;https://blog.csdn.net/Small_entreprene/article/details/146464905?sharetypeblogdetail&sharerId146464905&sharereferPC&sharesourceSmall_entreprene&sharefrommp_from_link我们经过上一篇的学习&#xff0c;接…

【Unity】 鼠标拖动物体移动速度跟不上鼠标,会掉落

错误示范&#xff1a; 一开始把移动的代码写到update里去了&#xff0c;发现物体老是掉(总之移动非常不流畅&#xff0c;体验感很差&#xff09; void Update(){Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out RaycastHit hit, M…

MATLAB 控制系统设计与仿真 - 30

用极点配置设计伺服系统 方法2-反馈修正 如果我们想只用前馈校正输入&#xff0c;从而达到伺服控制的效果&#xff0c;我们需要很精确的知道系统的参数模型&#xff0c;否则系统输出仍然具有较大的静态误差。 但是如果我们在误差比较器和系统的前馈通道之间插入一个积分器&a…

VMware Windows Tools 存在认证绕过漏洞(CVE-2025-22230)

漏洞概述 博通公司&#xff08;Broadcom&#xff09;近日修复了 VMware Windows Tools 中存在的一个高危认证绕过漏洞&#xff0c;该漏洞编号为 CVE-2025-22230&#xff08;CVSS 评分为 9.8&#xff09;。VMware Windows Tools 是一套实用程序套件&#xff0c;可提升运行在 VM…