Python之numpy数组篇(下)

news/2024/4/28 14:46:51/文章来源:https://blog.csdn.net/qq_51478745/article/details/127453094

目录

一、数组排序

1、概念

2、升序,最大、最小值

3、原地、横向排序

二、数组内积运算

1、概念

2、代码例子

三、访问数组元素

1、使用介绍

2、行列直接访问

3、切片

4、行列访问扩展

 四、数组对函数运算的支持

1、概念

2、例子

 五、改变数组形状

1、方法

2、shape()

3、reshape()

4、 resize()

六、数组堆叠与合并

1、堆叠

2、合并


一、数组排序

1、概念

(1)argsort()函数:返回一个数组

(2)索引:该数组中的每个元素的位置

(3)argmax()、argmin()函数:返回数组中最大最小元素下标

(4)sort():数组原地排序

2、升序,最大、最小值

import numpy as np
x = np.array([3,1,2])
np.argsort(x)    #返回升序排序后元素的原下标
x[_]
x = np.array([3,1,2,4])
x.argmax(),x.argmin()    #最大值和最小值的下标
np.argsort(x)
x[_]

3、原地、横向排序

x.sort()#原地排序
x
x = np.random.randint(1,10,(2,5))
x
x.sort(axis=1)  #横向排序,注意纵向的元素对应关系变化了
x


二、数组内积运算

1、概念

(1)对于两个等长数组x(x_{1},x_{2},x_{3},\cdot \cdot \cdot ,x_{n})y(y_{1},y_{2},y_{3},\cdot \cdot \cdot ,y_{n}),其内积为两个数组中对应位置的元素乘积之和,计算公式如下:

x\cdot y=\sum_{i=1}^{n}x_{i}y_{i}

(2)dot()函数:用来计算两个数组的内积

(3)numpy中的数组也提供了dot()方法,计算和另一个数组的内积,也可以借助于内置sum()函数计算两个数组的内积

2、代码例子

x = np.array((1,2,3))
y = np.array((4,5,6))
print(np.dot(x,y))
print(x.dot(y))
print(sum(x*y))


三、访问数组元素

1、使用介绍

可以通过下标和切片的形式来访问数组中的某个或多个元素

2、行列直接访问

b = np.array(([1,2,3],[4,5,6],[7,8,9]))
b[0]   #第0行所有元素
b[0][0]   #第0行第0列的元素
b[0,2]   #第0行第2列的元素,等价于b[0][2]的形式
b[[0,1]]   #第0行和第1行的所有元素,只指定行下标,不指定列下标,表示所有列
b[[0,2,1],[2,1,0]]   #第0行第2列、第2行第1列、第1行第0列的元素,先行后列

3、切片

a = np.arange(10)
a[::-1]  #方向切片
a[::2]   #隔一个取一个元素
a[:5]  #前5个元素

4、行列访问扩展

c = np.arange(25)   #创建数组
c.shape =5,5   #修改数组形状
c
c[0,2:5]  #行下标为0且列下标介于[2,5)之间的元素值
c[1]    #行下标为1的所有元素,不指定列下标,表示所有列
c[2:5,2:5]   #行下标和列下标都介于[2,5)之间的元素值
c[[1,3],[2,4]]   #第1行第2列元素和第3行第4列元素
c[[1,3],2:4]     #第1行,第3行的第2,3列
c[:,[2,4]]     #第2列和第4列所有元素
c[:,3]    #第3列所有元素
c[[1,3]]   #第1行第3行所有元素
c[[1,3]][:,[2,4]]    #第1,3行第2,4列所有元素


 四、数组对函数运算的支持

1、概念

numpy提供了大量用于对数组进行计算的函数,可以用于对数组中所有元素进行同样的计算返回新数组,处理速度比使用循环要快得多

2、例子

import numpy as npx = np.arange(0,100,10,dtype=np.floating)
print(x)
print(np.sin(x))   #一维数组中所有元素的值求正弦值
x = np.array(([1,2,3],[4,5,6],[7,8,9]))
print(x)
print(np.cos(x))
print(np.round(np.cos(x)))
print(np.ceil(x/2))


 五、改变数组形状

1、方法

(1)reshape():返回新数组但不能改变数组中元素的总数量

(2)resize():对数组进行原地修改并且会根据需要进行补0或丢弃部分元素

(3)shape属性:直接原地修改数组的大小

2、shape()

import numpy as np
x = np.arange(1,11,1)
x.shape    #查看数组的形状
x.size     #数组中元素的数量
x.shape = 2,5    #改为2行5列
x
x.shape
x.shape = 5,-1    #-1表示自动计算
x

3、reshape()

x = x.reshape(2,5)
x
x = np.array(range(5))
x.reshape((1,10))    #reshape()不能修改数组元素个数,出错

4、 resize()

x.resize((1,10))     #resize()可以修改数组元素个数
x
np.resize(x,(1,3))    #使用numpy的resize()返回新数组
x   #不对原数组进行任何修改


六、数组堆叠与合并

1、堆叠

(1)堆叠数组:指沿着特定的方向把多个数组合并到一起,numpy的h

(2)水平堆叠:

import numpy as np
arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
np.hstack((arr1,arr2))
arr3 = np.array([[1],[2],[3]])
arr4 = np.array([[4],[5],[6]])
np.hstack((arr3,arr4))

 

(3)垂直堆叠:

np.vstack((arr1,arr2))
np.vstack((arr3,arr4))

2、合并

(1)concatenate()函数也提供了类似的数组合并功能,参数axis是指定沿哪个方向或维度进行合并,默认为0,即按行合并

np.concatenate((arr1,arr2))
np.concatenate((arr3,arr4))
np.concatenate((arr3,arr4),axis=1)

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

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

相关文章

1.3.3系统调用

文章目录为什么引入系统调用什么是系统调用系统调用和库函数的区别系统调用的背后为什么引入系统调用 为了防止这样情况的发生,就是防止进程能够随意的去调用我们的系统资源,操作系统提供了系统调用的功能,用户进程想要使用打印机这种共享资源…

12_Vue事件总结

事件总结 事件修饰符连携 准备工作 html <!-- 定义一个容器 --><div class="app"><!-- 事件修饰符连携 --><div class="box" @click="toBaidu"><a href="https://www.baidu.com" @click.stop="toBaid…

Java代码审计前置知识——SpringMVC基础

目录 (一&#xff09;回顾MVC 1.1 什么是MVC Model&#xff08;模型&#xff09; View&#xff08;视图&#xff09; Controller&#xff08;控制器&#xff09; 1.2 Model1时代 1.3 Model2时代 总结 1.4 回顾Servlet 0x01 新建一个Maven工程当做父工程,pom依赖 0x0…

1.1.2操作系统的特征

操作系统是一个系统软件&#xff0c;但与其他系统软件和应用软件有很大的不同&#xff0c;就是它拥有自己的特殊性&#xff0c;及基本特征 首先共享和并发是相互存在的条件共享和并发是虚拟和异步的前提&#xff0c;是操作系统的两个最基本的特征 1并发 拿餐厅吃饭举例子&…

3.3.3JavaScript网页编程——WebAPI(JS之BOM含正则)

目录BOMwindow对象定时器-延时函数setTimeoutJS执行机制&#xff08;执行栈、任务队列&#xff09;面试要问location对象location.href (获取完整url或者赋值)location.search (获取?后面的)location.hash(获取#号后面的)location.reloadnavigator对象&#xff08;检测浏览器移…

10_事件处理阶段

v-on指令 语法 v-on:xxx 这里的xxx指代的是各类事件类型,例如单击,双击,鼠标悬停,键盘监听等等...... 准备工作 准备一个容器,两个按钮,一个按钮不传递参数,另一个按钮传递参数 <body><!-- 创建一个容器 --><div class="subject"><!-- 标…

having where的区别,SQL70 返回更多的产品

返回更多的产品_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/dc91b7d2de3c4603a55995e83210f605?tpId298&tqId2368029&ru/exam/oj&qru/ta/sql-teach-yourself/question-ranking&sourceUrl%2Fexam%2Foj%3Fpage%3D1%26tab%3DSQL%25E7%25A…

MMSegmentation V0.27.0训练与推理自己的数据集(二)

1、官方模型转换MMSegmentation风格 如果你想自己转换关键字使用官方存储库的预训练模型&#xff0c;我们还提供了一个脚本swin2mmseg.py在tools directory &#xff0c;将模型的关键字从官方的repo转换为MMSegmentation风格。 python tools/model_converters/swin2mmseg.py …

一篇文章带你了解服务器操作系统——Linux简单入门

一篇文章带你了解服务器操作系统——Linux简单入门 Linux作为服务器的常用操作系统,身为工作人员自然是要有所了解的 在本篇中我们会简单介绍Linux的特点,安装,相关指令使用以及内部程序的安装等本篇内容属于《瑞吉外卖》的知识科普部分,有兴趣可以查看一下《瑞吉外卖》的相…

欧拉路径(欧拉环游、欧拉回路)

一个流行的游戏是用铅笔画这些图&#xff0c;但是图中的每一条边都只能被画一次&#xff0c;在画图过程中铅笔不能离开纸面。难度更高的问题是&#xff0c;不光要一笔画完图&#xff0c;并且起点和终点还要落在同一处。如果我们将上面的三个图形都看作图数据结构&#xff0c;那…

flash动画设计并发布、嵌入到网页

【创意内容】 Flash动画设计,二维动画自己选择了动画主题,有三个板块:bubbles动画、蝴蝶飞动画、全球游线图动画,都是自己做的,使用了场景运用动画、图片的滚动、形状遮罩等功能。 【程序运行截图】 bubbles butterflies global

ICCV 2021 | Y-Net:轨迹-场景信息的真正融合

今天没有多余的解释&#xff0c;直接开始吧~ 1. Y-Net网络结构 Y-Net的网络结构长什么样子呢&#xff1f;Y-Net的网络结构就长下图这样子。看上去我好像在自言自语&#xff0c;其实你仔细揣摩就会发现&#xff0c;我真的是在自言自语。可以看到说&#xff0c;Y-Net网络输入的是…

TPH-YOLOv5: 基于Transformer预测头的改进YOLOv5用于无人机捕获场景目标检测

代码链接&#xff1a;GitHub - cv516Buaa/tph-yolov5 这是一篇针对无人机小目标算法比赛后写的论文&#xff0c;无人机捕获场景下的目标检测是近年来的热门课题。由于无人机总是在不同的高度上飞行&#xff0c;目标尺度变化剧烈&#xff0c;给网络优化带来了负担。此外&#xf…

buu [NPUCTF2020]认清形势,建立信心

题目&#xff1a; from Crypto.Util.number import * from gmpy2 import * from secret import flagp getPrime(25) e # Hidden q getPrime(25) n p * q m bytes_to_long(flag.strip(b"npuctf{").strip(b"}"))c pow(m, e, n) print(c) print(pow(2,…

hadoop至MapReduce-004

MapReduce定义 MapReduce是一个分布式运算程序的编程框架&#xff0c;核心功能是将用户编写的业务逻辑代码和自带默认组件组合成一个完整的分布式运算程序&#xff0c;并发运行在hadoop集群上 MapReduce的优缺点 优点 易于编程&#xff1a;用户只关心业务逻辑代码扩展性&am…

webpack 异步import生成代码解析

文章目录原文件内容文件目录打包前打包后入口文件生成代码生成的一些辅助方法__webpack_require__.m__webpack_require__.d__webpack_require__.o__webpack_require__.u__webpack_require__.g__webpack_require__.r导入文件通用方法__webpack_require__异步文件引入获取下载文件…

AntDB-M设计之CheckPoint

1.引 言 数据库服务能力提升是一项系统性的工程&#xff0c;在不同的应用场景下&#xff0c;用户对于数据库各项能力的关注点也不同&#xff0c;如&#xff1a;读写延迟、吞吐量、扩展性、可靠性、可用性等等。国内不少数据库系统通过系统架构优化、硬件设备升级等方式&…

教程:使用Jmeter对带token的接口进行压测

最近在研究并发&#xff0c;用到了Jmeter对接口进行压力测试&#xff0c;记录下使用过程 一. 配置/bin下的Jmeter.properties&#xff0c;打开以下两项配置&#xff0c;一个是默认的编码&#xff0c;一个是默认的语言 二. 打开jmeter.bat运行&#xff0c;新建线程组&#xff0…

qt学习笔记6:ui实例 登录窗口布局

首先从ui布局界面去进行大致布局&#xff0c; 可以先把默认的一些移除掉&#xff0c;变成一个大的空窗口 用户窗口&#xff0c;一般都得有一个用户名和密码&#xff08;用label&#xff09;输入用Line edit&#xff0c; 再来俩按钮pushButton&#xff0c; 但仅仅这样是没有意义…

kafka学习(四):生产者发送消息的分区策略

Kafka为了增加系统的伸缩性(Scalability)&#xff0c;引入了分区(Partitioning)的概念。 Kafka 中的分区机制指的是将每个主题划分成多个分区&#xff08;Partition&#xff09;&#xff0c;每个分区是一组有序的消息日志。主题下的每条消息只会保存在某一个分区中&#xff0c;…