当前位置: 首页 > news >正文

python每日学习11:numpy库的用法(下)

python每日学习11:numpy库的用法(下)

  • 数组的拼接

    名方法称说明
    concatenate连接沿现有轴的数组序列
    hstack水平堆叠序列中的数组(列方向)
    vstack竖直堆叠序列中的数组(行方向)
    concatenate函数用于沿指定轴连接相同形状的两个或多个数组,格式:numpy.concatenate((a1, a2, …), axis)
    # 列表的拼接
    a=[1,2,3]
    b=[4,5,6]
    a.extend(b)
    # 一维数组的拼接
    x=np.arange(1,4)
    y=np.arange(4,7)
    print(np.concatenate([x,y]))
    # 二维数组的拼接
    a=np.array([[1,2,3],[4,5,6]])
    b=np.array([['a','b','c'],['d','e','f']])
    print(np.concatenate([a,b]))
    print(np.concatenate([a,b],axis=0))
    print(np.concatenate([a,b],axis=1))# hstack()、vstack()和dstack()的使用
    # numpy.hstack它通过水平堆叠来生成数组。
    # numpy.vstack 它通过垂直堆叠来生成数组
    # vstack 与hstack的使用
    a=np.arange(1,4)
    b=np.arange(4,7)
    print(np.vstack([a,b]))
    print(np.hstack([a,b]))
    # 三维数组的拼接
    # axis=0可以使用vstack替换
    # axis=1可以使用hstack替换
    # axis=2可以使用dstack替换
    aa=np.arange(1,37).reshape(3,4,3)
    bb=np.arange(101,137).reshape(3,4,3)
    print(np.concatenate((aa,bb),axis=0))#6 4 3
    print(np.concatenate((aa,bb),axis=1)) #3  8  3
    print(np.concatenate((aa,bb),axis=2))#3 4 6
    
  • 数组的转置

    # 数组的转置:将行与列对调,即第一行变成第一列…或第一列变成第一行…的操作即使转置操作。
    # transpose进行转换
    a=np.arange(1,13).reshape(2,6)
    print(a)
    print(a.transpose())
    print(a.T)
    
  • 数组的分隔

    # numpy.split 函数沿特定的轴将数组分割为子数组,格式如下:numpy.split(ary, indices_or_sections, axis)
    # split分隔
    x=np.arange(1,9)
    a=np.split(x,4)
    print(a)
    print(a[0])
    print(a[1])
    print(a[2])
    print(a[3])
    #传递数组进行分隔
    b=np.split(x,[3,5])#左开右闭
    print(b)
    # 水平分隔:使用hsplit函数可以水平分隔数组,该函数有两个参数,第1个参数表示待分隔的数组,第2个参数表示要将数组水平分隔成几个小数组
    # hsplit的使用
    grid=np.arange(16).reshape(4,4)
    a,b=np.hsplit(grid,2)
    print(a)
    print(b)
    # 垂直分隔:使用vsplit函数可以垂直分隔数组,该函数有两个参数,第1个参数表示待分隔的数组,第2个参数表示将数组垂直分隔成几个小数组。
    # vsplit的使用
    grid=np.arange(16).reshape(4,4)
    a,b=np.vsplit(grid,2)#行分成 0+1  2+3
    a,b,c=np.vsplit(grid,[1,3])#行分成 0 1+2 3
    
  • 数学函数

    方法说明
    np.abs()、np.fabs()计算整数、浮点数的绝对值
    np.sqrt()计算各元素的平方根
    np.reciprocal()计算各元素的倒数
    np.square()计算各元素的平方
    np.exp()计算各元素的指数ex
    np.log() np.log10() np.log2()计算各元素的自然对数、底数为10的对数、底数为2的对数
    np.sign()计算各元素的符号,1(整数)、0(零)、-1(负数)
    np.ceil() np.floor() np.rint()对各元素分别向上取整、向下取整、四舍五入
    np.modf()将各元素的小数部分和整数部分以两个独立的数组返回
    np.cos() 、np.sin()、np.tan(对各元素求对应的三角函数
    np.add()、np.subtract()、np.multiply()、np.divide()对两个数组的各元素执行加法、减法、乘法、除法求每个元素的倒数
    a=[3,4,5,6,7,8]
    b=np.array(a)
    print(1/b)
    # reciprocal()函数的使用
    a=np.arange(1,10,dtype=np.float32).reshape(3,3)
    print(np.reciprocal(a))
    # square()函数的使用
    # 一维数组
    a=np.arange(1,10)
    print(np.square(a))
    #二维数组
    aa=np.arange(1,13).reshape(3,4)
    print(np.square(aa))
    # sign()函数的使用
    a=np.arange(-5,5)
    print(np.sign(a))#计算各元素的符号,1(整数)、0(零)、-1(负数)
    # modf()函数的使用
    b=np.arange(-5,5,0.4)
    print(np.modf(b))
    # 三角函数的使用:NumPy 提供了标准的三角函数:sin()、cos()、tan()。
    x=np.linspace(1,10,5)
    y=np.sin(x)
    print(y)
    # numpy.around(a,decimals) 函数返回指定数字的四舍五入值
    # decimals: 舍入的小数位数。 默认值为0。 如果为负,整数将四舍五入到小数点左侧的位置
    # numpy.floor() 返回数字的下舍整数。
    # numpy.ceil() 返回数字的上入整数。
    a=np.array([1.0,4.55,123,0.657,25.323])
    print(np.around(a))
    print(np.around(a, decimals=1))
    print(np.around(a, decimals=-1))
    print(np.rint(a))
    print(np.floor(a))
    print(np.ceil(a))
    
  • 算术函数

    # 算术函数:如果参与运算的两个对象 都是ndarray,并且形状相同,那么会对位彼此之间进行(+ - * /)运算。NumPy 算术函数包含简单的加减乘除: add(),subtract(),multiply() 和 divide()。
    # 算术函数的使用
    a=np.arange(9,dtype=np.float32).reshape(3,3)
    b=np.array([10,10,10])
    print(np.add(a,b))
    print(np.subtract(a,b))
    print(np.multiply(a, b))
    print(np.divide(a, b))
    # 算术函数中out参数的使用
    x=np.arange(5)
    y=np.empty_like(x)
    np.multiply(x,10,out=y)
    print(y)
    # mod()函数的使用
    # numpy.mod() 计算输入数组中相应元素的相除后的余数。函数
    # numpy.remainder() 也产生相同的结果。
    a=np.array([10,10,30])
    b=np.array([3,5,7])
    print(np.mod(a, b))
    print(np.remainder(a, b))
    
  • 统计函数

    方法说明
    np.sum()求和
    np.prod()所有元素相乘
    np.mean()平均值
    np.std()标准差
    np.var()方差
    np.median(中数
    np.power()幂运算
    np.sqrt()开方
    np.min()最小值
    np.max()最大值
    np.argmin()最小值的下标
    np.argmax()最大值的下标
    np.cumsum()对数组中元素累积求和,可指定轴
    np.cumprod()对数组中元素累积求积,可指定轴
    np.ptp()计算一组数中最大值与最小值的差,可指定轴
    np.unique()删除数组中的重复数据,并对数据进行排序
    np.nonzero()返回数组中非零元素的索引
    power()函数的使用
    x=np.arange(1,5)
    y=np.empty_like(x)
    np.power(x,2,out=y)
    print(y)
    # median ()函数的使用
    a=np.array([4,2,1,5])
    print(np.median(a))#计算偶数个的中位数
    a=np.array([4,2,5])
    print(np.median(a))#奇数个的中位数
    a=np.arange(1,16).reshape(3,5)
    print(np.median(a))
    print(np.median(a,axis=0))#中间行
    print(np.median(a,axis=1))#中间列
    #mean函数的使用
    a=np.arange(1,11).reshape(2,5)
    print(np.mean(a))
    print(np.mean(a,axis=0))
    print(np.mean(a,axis=1))
    # 函数的使用
    a = np.random.randint(10,50,size=20)
    np.max(a)
    np.sum(a)
    np.min(a)
    np.max(a)
    np.ptp(a)
    np.unique(a)
    np.nonzero(a)
    
  • 其他常用函数

    方法说明
    np.tile()将数组的数据按照行列复制扩展
    np.repeat()将数组中的每个元素重复若干次
    roll()沿指定轴对数组元素进行移位
    resize()重新调整数组的大小
    place()/put()将数组中满足条件的元素/指定的元素替换为指定的值
    np.savetxt()将数据保存到txt文件中
    np.loadtxt()从文件中加载数据
    np.genfromtxt()根据文件内容中生成数据,可以指定缺失值的处理等
    np.any()如果数组中存在一个为True的元素(或者能转为True的元素),则返回
    np.all()True如果数组中所有元素都为True(或者能转为True的元素),则返回True
    np.where(条件,x,y)如果条件为True,对应值为x,否则对应值为y
    np.dot()将矩阵相乘
    np.sort()对数组进行排序,返回一个新的排好序的数组,原数组不变
    np.sort()返回的是数组值从小到大排序后元素对应的索引值
    # tile()和repeat()函数的使用
    a=np.arange(4)
    np.tile(a,2)##复制2次
    np.tile(a,(3,2))#行列复制
    print(np.repeat(a, 2))
    a=np.arange(1,13).reshape(3,4)
    np.repeat(a,2)
    print(np.repeat(a, 2, axis=0))
    print(np.repeat(a, 2, axis=1))
    # roll()函数的使用
    b=np.arange(12)
    print(np.roll(b, 3))#一维数组,向后调3个
    print(np.roll(b, -1))#向前调2个
    aa=np.arange(1,13).reshape(3,4)
    print(np.roll(aa, 2))
    print(np.roll(aa, 2, axis=0))
    # resize()函数的使用
    aa.reshape(4,3)#修改维度,元素个数必须相同
    np.resize(aa,(5,6)) #resize重新调整数组的大小,元素个数可以不相同
    # replace()和put()函数的使用
    aa=np.random.randint(40,100,(3,4))
    np.place(aa,aa<60,0)##小于60分的 全部替换为0
    aa=np.arange(1,13).reshape((3,4))
    np.put(aa,2,100)#put()指定的索引处的元素替换为指定的值
    # savetxt()和loadtxt()函数的使用
    a=np.random.randint(-50,100,1000)
    #保存
    np.savetxt('savetxt.txt',a,fmt='%d')
    #加载
    b=np.loadtxt('savetxt.txt',dtype=int)
    # any()、all()函数的使用
    x=np.array([False,True,False,1,0,True])
    np.any(x)#any函数 只要有一个元素为True,则结果返回True
    np.all(x)#all函数 只有所有元素都为True,则结果返回True
    # where()函数的使用
    np.random.seed()
    a=np.random.randint(20,100,10)
    print(a)
    print(np.where(a>50,True,False))
    # dot函数的使用
    x=np.array([[1,2],[3,4]])
    y=np.array([[2,3],[1,2]])
    x.dot(y)#dot函数 矩阵相乘  矩阵相乘前提是,第一个矩阵的列数和第二个矩阵的行数要相同
    x.dot(3) #每个元素与3相乘
    
  • 数组排序

    # 数组排序:排序中主要用到的方法是np.sort和np.argsort。其中np.sort()是对数组直接排序。而np.argsort()是返回排序后的原始索引。
    # 一维数组排序
    a=np.array([5,2,4,5,7,3,8])
    print(np.sort(a))
    print(np.argsort(a))#np.argsort()是返回排序后的原始索引。
    # 二维数组排序
    np.random.seed(44)
    a=np.random.randint(100,size=(4,6))
    print(np.sort(a))
    print(np.sort(a,axis=0))#上行比下行小
    print(np.sort(a,axis=1))#左列比右列小
    # 按最后一列进行排序
    b=a[:-1]
    print(b)#可以先获取最后一列的数组
    index=np.argsort(b)#获取最后一列数组排序后的原始索引
    
  • numpy广播机制

    # 广播的规则
    # 1,如果两个数组维度个数不同,那么小维度的数组形状会在左边补1
    # 2,如果两个数组形状在任何一个维度上都不匹配,数组的形状会沿着维度为1的维度扩展到匹配上另一个数组的形状
    # 3,如果没有维度形状为1,则会引发异常两个数组相加
    #  0 1 2    0 0 0
    #  0 1 2    1 1 1
    #  0 1 2    2 2 2
    a=np.array([0,1,2])
    print(a+5)
    b=np.array([2,2,2])
    print(a+b)
    # 维度不相同的数组相加
    a=np.arange(3)
    b=np.arange(3).reshape(3,1)
    print(a+b)
    
  • 比较掩码

    # 比较掩码:比较操作,会返回与参与运算数组形状相同的数组,其中,满足条件的为True,不满足的为False
    # 数组的比较操作
    a=np.array([[1,2,39],[34,45,67]])#传入的数组,需要和a形状一致,且类型为Bool类型,这个叫做掩码式索引
    print(a<50)
    # 掩码式索引取值,过滤掉不符合条件的
    print(a[np.array([[True,True,True],[True,True,False]])])
    print(a[a<50])
    

相关文章:

python每日学习11:numpy库的用法(下)

python每日学习11&#xff1a;numpy库的用法(下) 数组的拼接 名方法称说明concatenate连接沿现有轴的数组序列hstack水平堆叠序列中的数组&#xff08;列方向&#xff09;vstack竖直堆叠序列中的数组&#xff08;行方向&#xff09;concatenate函数用于沿指定轴连接相同形状的两…...

【Emacs有什么优点,用Emacs写程序真的比IDE更方便吗?】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…...

6、基于Fabirc 2.X 通用电子存证系统部署

evidence 将GOPATH设置为/root/go,拉取项目&#xff1a; cd $GOPATH/src && git clone https://gitee.com/henan-minghua_0/evidence.git 在/etc/hosts中添加&#xff1a; 127.0.0.1 orderer.example.com 127.0.0.1 peer0.org1.example.com 127.0.0.1 peer1.org…...

Linux Vim 由浅入深的教程

引言 原文链接 Vim是Linux系统中非常强大的文本编辑器&#xff0c;因其强大的功能和灵活的操作而受到广泛使用。尤其是在服务器管理和开发环境中&#xff0c;Vim几乎是必备工具。本教程将以CentOS 7为例&#xff0c;详细讲解Vim的安装、基本操作以及一些高级技巧&#xff0c;…...

MIT6.824(6.5840) Lab1笔记+源码

文章目录 其他人的内容&#xff0c;笔记写的更好&#xff0c;思路可以去看他们的MapReduceworkermapreduce coordinatorrpc纠错 源码worker.gocoordinator.gorpc.go 原本有可借鉴的部分 mrsequential.go&#xff0c;多看几遍源码 其他人的内容&#xff0c;笔记写的更好&#xf…...

【目录】8051汇编与C语言系列教程

8051汇编与C语言系列教程 作者将狼才鲸创建日期2024-07-23 CSDN文章地址&#xff1a;【目录】8051汇编与C语言系列教程本Gitee仓库原始地址&#xff1a;才鲸嵌入式/8051_c51_单片机从汇编到C_从Boot到应用实践教程 一、本教程目录 序号教程名称简述教程链接1点亮LCD灯通过IO…...

群管机器人官网源码

一款非常好看的群管机器人html官网源码 搭建教程&#xff1a; 域名解析绑定 源码文件上传解压 访问域名即可 演示图片&#xff1a; 群管机器人官网源码下载&#xff1a;客户端下载 - 红客网络编程与渗透技术 原文链接&#xff1a; 群管机器人官网源码...

整合EasyExcel实现灵活的导入导出java

引入pom依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId></dependency>实现功能 结合Vue前端&#xff0c;实现浏览器页面直接导出日志文件实现文件的灵活导入文件导出 3. 实体类 实体类里有自定义转…...

springSecurity学习之springSecurity web如何取得用户信息

web如何取得用户信息 之前说过SecurityContextHolder默认使用的是ThreadLocal来进行存储的&#xff0c;而且每次都会清除&#xff0c;但是web每次请求都会验证用户权限&#xff0c;这是如何做到的呢&#xff1f; 这是通过SecurityContextPersistenceFilter来实现的&#xff0…...

eclipse中的classbean导入外部class文件,clean项目后删除问题

最近被eclipse搞得头疼&#xff0c;下午终于解决 eclipse创建的java项目中&#xff0c;类的输出目录是classbean。由于项目需要&#xff0c;classbean目录下已经导入了外部的类&#xff0c;但每次clean项目时&#xff0c;会把class删掉。 广泛查询&#xff0c;eclipse不清空c…...

OBD诊断(ISO15031) 0A服务

文章目录 功能简介ISO 15765-4的诊断服务定义1、请求具有永久状态的排放相关故障诊断码2、请求具有永久状态的排放相关故障诊断码3、示例报文 功能简介 0A服务&#xff0c;即 Request emission-related diagnostic trouble code with permanent status&#xff08;请求排放相关…...

ForCloud全栈安全体验,一站式云安全托管试用 开启全能高效攻防

对于正处于业务快速发展阶段的企业&#xff0c;特别是大型央国企而言&#xff0c;日常的安全部署和运营管理往往横跨多家子公司&#xff0c;所面临的挑战不言而喻。尤其是在面对当前常态化的大型攻防演练任务时&#xff0c;难度更是呈“几何级数”上升&#xff1a; 合规难 众…...

Java——————接口(interface) <详解>

1.1 接口的概念 在现实生活中&#xff0c;接口的例子比比皆是&#xff0c;比如&#xff1a;笔记本电脑上的USB接口&#xff0c;电源插座等。 电脑的USB口上&#xff0c;可以插&#xff1a;U盘、鼠标、键盘...所有符合USB协议的设备 电源插座插孔上&#xff0c;可以插&#xff…...

【C++】【继承】【子对象】【构造函数】含子对象的派生类的构造函数写法

&#xff08;1&#xff09;子对象的概念&#xff1a;若派生类A1的数据成员中包含基类A的对象a&#xff0c;则a为派生类A1的子对象 &#xff08;2&#xff09;含子对象的派生类的构造函数的执行顺序是&#xff1a; ①调用基类构造函数&#xff0c;对基类数据成员初始化 ②调用子…...

golang语言 .go文件版本条件编译,xxx.go文件指定go的编译版本必须大于等于xxx才生效的方法, 同一个项目多个go版本文件共存方法

在go语言中&#xff0c;我们不关是可以在编译时指定版本&#xff0c; 在我们的xxx.go文件中也可以指定go的运行版本&#xff0c;即 忽略go.mod中的版本&#xff0c;而是当当前的go运行版本达到指定条件后才生效的xxx.go文件。 方法如下&#xff1a; 我们通过在xxx.go文件的头部…...

深入浅出mediasoup—通信框架

libuv 是一个跨平台的异步事件驱动库&#xff0c;用于构建高性能和可扩展的网络应用程序。mediasoup 基于 libuv 构建了包括管道、信号和 socket 在内的一整套通信框架&#xff0c;具有单线程、事件驱动和异步的典型特征&#xff0c;是构建高性能 WebRTC 流媒体服务器的重要基础…...

每日一题 LeetCode03 无重复字符的最长字串

1.题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长字串的长度。 2 思路 可以用两个指针, 滑动窗口的思想来做这道题,即定义两个指针.一个left和一个right 并且用一个set容器,一个length , 一个maxlength来记录, 让right往右走,并且用一个set容器来…...

栈和队列(C语言)

栈的定义 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&#xff1a;…...

swagger-ui.html报错404

问题1&#xff1a;权限受限无法访问 由于采用的Shiro安全框架&#xff0c;需要在配置类ShiroConfig下的Shiro 的过滤器链放行该页面&#xff1a;【添加&#xff1a;filterChainDefinitionMap.put("/swagger-ui.html", "anon");】 public ShiroFilterFact…...

Milvus 核心组件(3)--- MinIO详解

目录 背景 MinIO 安装 docker desktop 安装 Ubuntu UI 在 docker 中的安装 Minio 下载及安装 启动minio docker image 保存 启动 minio web 网页 下一次启动 MinIO基本概念 基本概述 主要特性 应用场景 MinIO 使用 连接server 创建bucket 查询bucket 上传文件…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...

13.10 LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析

LangGraph多轮对话系统实战:Ollama私有部署+情感识别优化全解析 LanguageMentor 对话式训练系统架构与实现 关键词:多轮对话系统设计、场景化提示工程、情感识别优化、LangGraph 状态管理、Ollama 私有化部署 1. 对话训练系统技术架构 采用四层架构实现高扩展性的对话训练…...