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.rhkb.cn/news/43866.html

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

相关文章

C++中的new、malloc、realloc、calloc——特点?函数原型?释放方式?区别?校招面试常问内容?

作者:求一个demo 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 内容通俗易懂,没有废话,文章最后是面试常问内容(建议通过标题目录学习) 废话不多…

【字符设备驱动开发–IMX6ULL】(一)简介

【字符设备驱动开发–IMX6ULL】(一)简介 一、Linux驱动与裸机开发区别 1.裸机驱动开发回顾 ​ 1、底层,跟寄存器打交道,有些MCU提供了库。 spi.c:主机驱动(换成任何一个设备之后只需要调用此文件里面的…

Spring AI MCP 架构详解

Spring AI MCP 架构详解 1.什么是MCP? MCP 是一种开放协议,它对应用程序向大语言模型(LLMs)提供上下文信息的方式进行了标准化。可以把 MCP 想象成人工智能应用程序的 USB-C 接口。就像 USB-C 为将设备连接到各种外围设备和配件提供了一种…

【Java】IO流

一、IO流的定义 二、 字节流 (一)FileOutputStream 操作本地文件的字节输出流,可以把程序中的数据写到本地文件中。 1、书写步骤 注: (1)创建字节输出流对象: 参数是字符串表示的路径或者…

Java 大视界 -- Java 大数据机器学习模型在电商商品推荐冷启动问题中的解决策略(160)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

MySQL———作业实验

一、创建数据库表 1.创建数据库 mysql> create database mydb11_stu; mysql> use mydb11_stu; 2.建表 (1)创建student表 mysql> create table student ( -> id int(10) not null unique primary key, -> name varch…

深度解析衡石科技HENGSHI SENSE嵌入式分析能力:如何实现3天快速集成

嵌入式分析成为现代SaaS的核心竞争力 在当今SaaS市场竞争中,数据分析能力已成为产品差异化的关键因素。根据Bessemer Venture Partners的最新调研,拥有深度嵌入式分析功能的SaaS产品,其客户留存率比行业平均水平高出23%,ARR增长速…

Day17 -实例:利用不同语言不同框架的特征 进行识别

前置:我们所需的web站点,都可以利用fofa去搜索,例如:app"flask"这样的语句去找对应的站点,找到后,我们模拟不知道是什么框架,再根据特征去判断它的框架。 ***利用工具可以再去结合大…

Linux输入系统应用编程

什么是输入系统 Linux 输入系统是处理用户输入设备(如键盘、鼠标、触摸屏、游戏手柄等)的软件架构。在应用编程层面,它提供了与这些输入设备交互的接口。 主要组成部分 输入设备驱动层:直接与硬件交互的驱动程序 输入核心层:内核中的输入子…

【C++初阶】---类和对象(下)

1.再探构造函数(初始化链表) •之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗…

Ubuntu 22.04.5 LTS 设置时间同步 ntp

提示:文章为操作记录,以备下次使用 文章目录 前言一、设置ntp1.1替换国内源1.2 更新源&安装1.3 验证 前言 设置时间同步,环境版本 # cat /etc/os-release PRETTY_NAME"Ubuntu 22.04.5 LTS" NAME"Ubuntu" VERSION_…

飞书电子表格自建应用

背景 coze官方的插件不支持更多的飞书电子表格操作,因为需要自建应用 飞书创建文件夹 创建应用 开发者后台 - 飞书开放平台 添加机器人 添加权限 创建群 添加刚刚创建的机器人到群里 文件夹邀请群 创建好后,就可以拿到id和key 参考教程: 创…

计算机网络——传输层(TCP)

传输层 在计算机网络中,传输层是将数据向上向下传输的一个重要的层面,其中传输层中有两个协议,TCP,UDP 这两个协议。 TCP 话不多说,我们直接来看协议报头。 源/目的端口号:表示数据从哪个进程来&#xff0…

【ArcGIS】ArcGIS10.6彻底卸载和ArcGIS10.2安装全过程

卸载python3后,解决了ArcGIS与python3冲突问题后,软件可以正常打开使用了 但是还是出现了问题 用ArcGIS 进行空间分析时,中间操作没有任何报错和问题,但是就是没有运行结果 在别人的软件上操作一遍可以出现运行结果 关闭确有这个,但真的不是我给它的运行时间不够,反反复复试…

智慧电力:点亮未来能源世界的钥匙

在科技日新月异的今天,电力行业正经历着前所未有的变革。智慧电力,作为这一变革的核心驱动力,正逐步改变着我们对电力的认知和使用方式。它不仅是电力行业的一次技术革新,更是推动社会可持续发展、实现能源高效利用的重要途径。 智…

oracle中java类的使用

方式一: 编写一个简单的java类 vi OracleJavaDemo.java public class OracleJavaDemo { public static String processData(String input) { return "Processed: " input; } } 编译 javac OracleJavaDemo.java 生成OracleJavaDemo…

pycharm2024.1.1版本_jihuo

目录 前置: 步骤: step one 下载软件 step two 卸载旧版本 1 卸载软件 2 清除残余 step three 下载补丁 step four 安装2024.1.1版本软件 step five 安装补丁 1 找位置放补丁 2 自动设置环境变量 step six 输入jihuo码 前置: 之…

革新汽车安全通信技术,美格智能全系车载通信模组支持NG-eCall

根据QYR(恒州博智)的统计及预测,2024年全球汽车无线紧急呼叫(eCall)设备市场销售额达到了25.17亿美元,预计2031年将达到44.97亿美元,年复合增长率(CAGR 2025-2031)为8.8%…

AWE 2025:当AI科技遇见智能家居

3月20日,以“AI科技、AI生活”为主题的AWE2025(中国家电及消费电子博览会)在上海新国际博览中心开幕。作为全球家电行业风向标,本届展会最大的亮点莫过于健康理念在家电领域的全面渗透。从食材保鲜到空气净化,从衣物清…

《Spring Cloud Eureka 高可用集群实战:从零构建高可靠性的微服务注册中心》

从零构建高可用 Eureka 集群 | Spring Cloud 微服务架构深度实践指南 本文核心内容基于《Spring Cloud 微服务架构开发》第1版整理,结合生产级实践经验优化 实验环境:IntelliJ IDEA 2024 | JDK 1.8| Spring Boot 2.1.7.RELEASE | Spring Cloud Greenwich…