当前位置: 首页 > 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 上传文件…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...