numpy学习笔记(5),其他实用函数

8. 更多函数

8.1 随机数

8.1.1 常用随机数

8.1.1.1 numpy.random.rand(d0, d1, …, dn)
  • 返回[0.0, 1.0)随机浮点数,即大于等于0.0,小于1.0。
  • d0, d1, …, dn:返回的数组形状
# 使用numpy.random.rand函数
import numpy as np
np.random.rand(3)
array([0.8385857 , 0.8107416 , 0.99370002])
np.random.rand(3, 2)
array([[0.48333664, 0.78368701],[0.80706205, 0.3135694 ],[0.5942944 , 0.36877126]])
8.1.1.2 numpy.random.randint(low, high=None, size=None, dtype=‘1’)
  • 返回[low, high)随机整数,如果high省略则返回[0, low)随机整数
  • size:返回数组的形状
  • dtype:数组元素类型,l:long
# 使用numpy.random.randint函数
np.random.randint(10, high=20, size=(3, 4))
array([[12, 18, 14, 10],[19, 14, 11, 11],[13, 14, 14, 10]])

8.1.2 正态分布随机数

8.1.2.1 标准正态分布:numpy.random.randn(d0, d1, …, dn)。
  • 返回标准正态分布对技术,参数与rand函数相同

在这里插入图片描述

np.random.randn(3, 2)
array([[-0.80338048, -0.29042362],[-0.76188074, -0.01707931],[ 0.26754266, -0.99031277]])
8.1.2.2 正态分布:numpy.random.normal(loc = 0.0, scale = 1.0, size=None)。
  • 返回正态分布随机数
  • loc:平均值
  • scale:标准差
np.random.normal(1024, 30, size=(3, 4))
array([[ 978.98804509, 1024.68441494, 1078.41620308, 1005.00643101],[1008.94025792, 1005.52545803, 1009.09307745, 1027.56131116],[1023.88789661,  988.79911263, 1012.40717316, 1074.79730252]])

8.2 排序函数

8.2.1 轴排序

sort函数,按照轴对数组进行排序,语法格式如下:

numpy.sort(a, axis=-1, kind='quicksort', order=None)
  • a:要排序的数组
  • axis:排序的轴索引,默认是-1,表示最后一个轴
  • kind:排序类型,可选则quicksort,mergesort,heapsort,默认是quicksort
  • order:排序的字段,自定义对象里可用到
a = np.random.randint(0, 10, size=(3, 4))
# 只在1轴上排序
np.sort(a, axis=1)
array([[0, 5, 8, 8],[3, 4, 5, 9],[2, 2, 4, 6]])
# 只在0轴上排序
np.sort(a, axis=0)
array([[2, 0, 5, 3],[5, 2, 6, 4],[8, 4, 9, 8]])

8.2.2 轴排序索引

argsort函数,按照轴对数组进行排序索引,语法格式如下:
numpy.argsort(a, axis=-1, kind=‘quicksort’, order=None)

b = np.random.randint(0, 10, size=(3, 4))
b
array([[9, 9, 8, 6],[2, 3, 4, 6],[1, 4, 2, 0]])
# 排序返回结果是原数组的索引组合
np.argsort(b, axis=1)
array([[3, 2, 0, 1],[0, 1, 2, 3],[3, 0, 2, 1]], dtype=int64)

8.3 聚合函数

可以对整个数组元素,或对轴元素进行计算,获取单一值。
如:sum,amin,amax,mean(平均值),average(加权平均值),var(方差),std(标准偏差)等。

聚合函数都会倒置结果数组降低维度

8.3.1 求和

可以使用numpy.sum函数,或numpy.ndarray.sum方法

8.3.1.1 numpy.sum函数,语法如下
numpy.sum(a, axis=None)
  • a:要求和的数组
  • axis:指定轴索引,如果axis没有指定,则求所有元素之和,如果指定,则求该轴上的所有元素之和。
a = np.random.randint(0, 10, size=(3, 4))
print(a)
np.sum(a, 1)
[[3 3 2 6][5 1 0 4][2 6 8 7]]array([14, 10, 23])
8.3.1.2 numpy.ndarray.sum方法,语法格式如下:
numpy.ndarray.sum(axis=None)
a.sum(1)
array([14, 10, 23])
b = np.arange(0, 27)
b_3 = b.reshape(3, 3, 3)
print(b_3)
# 沿轴计算后的结果,会降低一个维度
print("结果会降低一个维度:", np.sum(b_3, 2))
[[[ 0  1  2][ 3  4  5][ 6  7  8]][[ 9 10 11][12 13 14][15 16 17]][[18 19 20][21 22 23][24 25 26]]]
结果会降低一个维度: [[ 3 12 21][30 39 48][57 66 75]]

8.3.2 最大值

求最大值可以使用numpy.amax函数,numpy.nanmax函数,或数组的ndarray.max方法

8.3.2.1 numpy.amax函数语法如下:
numpy.amax(a, axis=None)
a = np.random.randint(0, 10, size=(3, 4))
print(a)
np.amax(a, axis=1)
[[9 1 1 3][5 1 8 2][9 4 9 9]]array([9, 8, 9])
8.3.2.2 numpy.nanmax函数,忽略NaN(Not a Number,非数),语法如下:
numpy.nanmax(a, axis=None)
b = np.array([[np.nan, 1, 2, 3], [4, 5, 6, np.nan]])
np.nanmax(b, axis=1)
array([3., 6.])
8.3.2.3 ndarray.max方法,类似于语法numpy.amax函数,语法如下:
numpy.ndarray.max(axis=None)

8.3.3 最小值

与8.3.2 最大值用法类似

8.3.4 mean,平均值函数

numpy.mean函数,numpy.nanmean函数,或者ndarray.mean方法都可以求平均值。

8.3.4.1 numpy.mean函数语法如下:
numpy.mean(a, axis=None)
import numpy as np
a = np.arange(0, 9)
b = a.reshape(3, 3)
print("b: ", b)
np.mean(b, axis=1)
b:  [[0 1 2][3 4 5][6 7 8]]array([1., 4., 7.])
# 不指定轴,计算所有元素的平均值,结果是个标量
np.mean(b)
4.0

8.3.5 加权平均值

numpy.average函数,语法如下:

numpy.average(a, axis=None, weights=None)
  • a:数组
  • axis:指定轴
  • weight:权重,一维数组
a = np.arange(0, 10)
b = a.reshape(2, 5)
print("b: ", b)
c = np.average(b, axis=0, weights=[0.3, 0.7])
print("c", c)
b:  [[0 1 2 3 4][5 6 7 8 9]]
c [3.5 4.5 5.5 6.5 7.5]

8.4 unique函数

去除数组中的重复元素,并按照从小到大的顺序排列,语法格式如下:

numpy.unique(a, return_index=False, axis=None)
  • a:原始数组
  • return_index:设置为True,返回原始数组中的索引数组
  • axis:指定轴。如果没有指定,多维数组会降低到一维平铺。
H = [x for x in 'Hello']
W = [y for y in 'world']
print("H: ", H, "\nW: ", W)
H:  ['H', 'e', 'l', 'l', 'o'] 
W:  ['w', 'o', 'r', 'l', 'd']
# 创建二维数组
a = np.array([H, W])
a
array([['H', 'e', 'l', 'l', 'o'],['w', 'o', 'r', 'l', 'd']], dtype='<U1')
# 不指定轴,降低到一维,整体去重
u = np.unique(a)
u
array(['H', 'd', 'e', 'l', 'o', 'r', 'w'], dtype='<U1')
# 返回值的第一个是值,第二个是索引
u, idx = np.unique(a, return_index=True)
# 返回的值数组
u
array(['H', 'd', 'e', 'l', 'o', 'r', 'w'], dtype='<U1')
# 返回的索引数组
idx
array([0, 9, 1, 2, 4, 7, 5], dtype=int64)
# 指定轴
a = np.array([[1, 0, 0], [1, 0, 0], [2, 1, 4]])
print(a)
[[1 0 0][1 0 0][2 1 4]]
# 指定0轴,再0轴上去重
u = np.unique(a, axis=0)
u
array([[1, 0, 0],[2, 1, 4]])
# 指定1轴,再1轴上去重,看起来没有效果
u = np.unique(a, axis=1)
u
# 因为1轴上每一个数组去重后,元素数量产生变化
array([[0, 0, 1],[0, 0, 1],[1, 4, 2]])
# 重新修改初始数组,在一轴上去重
b = np.array([[1, 0, 0], [1, 0, 0], [1, 1, 1]])
print(b)
[[1 0 0][1 0 0][1 1 1]]
u = np.unique(b, axis=1)
u
array([[0, 1],[0, 1],[1, 1]])

8.5 where函数

where相当于三元运算符,语法格式如下:

numpy.where(condition[, x, y])
  • condition:条件,如果为True返回x,为False返回y
  • x和y可以是标量,或数组。
a = np.arange(5)
a
array([0, 1, 2, 3, 4])
b = np.where(a < 3, a, a + 100)
b
array([  0,   1,   2, 103, 104])

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

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

相关文章

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

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是"abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释: 因为无重…

2009-2021年上市公司僵尸企业识别数据(含原始数据+计算代码+计算结果)

2009-2021年上市公司僵尸企业识别数据&#xff08;含原始数据计算代码计算结果&#xff09; 1、时间&#xff1a;2009-2021年 2、指标&#xff1a; 证券代码 、证券简称、上市日期、year、净利润、政府补助、流动负债合计、负债合计、财务费用明细利息支出、资产总计、长期负…

(Oracle)SQL优化案例:隐式转换优化

项目场景 项目现场的某个kettle模型执行非常缓慢&#xff0c;原因在于某个SQL执行效率非常的低。甲方得知此事要求公司赶紧优化&#xff0c;负责该模块的同事对SQL优化并不熟悉。所以作为一个立志成为优秀DBA的ETL工程师&#xff0c;我自告奋勇&#xff1a;不是DBA&#xff0c;…

ES6 关于Class类的继承 extends(2024-04-10)

1、简介 类Class 可以通过extends关键字实现继承&#xff0c;让子类继承父类的属性和方法。extends 的写法比 ES5 的原型链继承&#xff0c;要清晰和方便很多。 class Foo {constructor(x, y) {this.x x;this.y y;console.log(父类构造函数)}toString() {return ( this.x …

《由浅入深学习SAP财务》:第2章 总账模块 - 2.7 总账模块报表 -2.7.1 对外报表:资产负债表及利润表

总账模块报表既包括对外报告的资产负债表、损益表、现金流量表&#xff0c;也包括企业自身用于查询和分析的各类报表&#xff0c;如科目余额表等。 2.7.1 对外报表&#xff1a;资产负债表及利润表 在SAP中&#xff0c;出具资产负债表和利润表的标准方法是先在后台建立一套“会…

971: 统计利用先序遍历创建的二叉树的深度

解法&#xff1a; 1.先序遍历创建二叉树链表形式 2.求二叉树的深度 用后序遍历实现&#xff1a; 1.后序遍历求节点A左右子树高度 2.对节点A&#xff1a; 1.取左右子树较大高度 2.返回高度1&#xff08;即以节点A为根节点的子树的最大深度&#xff09; 例如 #include <ios…

LINUX命令行后台运行matlab程序

UBUNTU安装了matlab&#xff0c;需要后台运行matlab程序。 一、MobaXterm程序&#xff08;非后台&#xff09; 使用mobaxterm程序&#xff0c;ssh连接ubuntu&#xff0c;在对应账号中输入matlab&#xff0c;即可基于mobaxterm自带的Xserver可视化界面&#xff0c;打开matlab界…

RobotFramework功能自动化测试框架基础篇

概念 RobotFramework是什么&#xff1f; Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性&#xff0c;支持关键字驱动&#xff0c;可以同时测试多种类型的客户端或者接口&#xff0c;可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试…

网页的基本结构

VScode中HTML的自动补全&#xff1a; 自动补全&#xff1a;例如标签 <h1></h1> 1.输入<h1>后其会自动给其补全 2. 进输入h1 tab键 网页的基本结构&#xff1a; 网页的基本结构只需要在VScode当中输入&#xff1a;&#xff01; tab键即可 <!DOCTYPE html…

ARM v8 Cortex R52内核 08 内存保护单元 Memory Protection Unit

ARM v8 Cortex R52内核 08 内存保护单元 Memory Protection Unit 8.1 About the MPU Cortex R52 处理器具有两个可编程的MPU&#xff0c;由EL1和EL2控制。每个MPU允许将4GB内存地址划分为多个区域。 每个内存区域由基地址、限制地址、访问权限和内存属性定义。 对于数据访问…

阿里对象储存OSS的SDK使用

对象存储OSS 该功能的实现使用了阿里的&#xff1a;对象存储OSS技术。 在阿里对象存储空间的文件可以 以链接 的形式进行访问: 文件访问路径规则 &#xff1a;https://BucketName.Endpoint/ObjectName 该技术的使用方式有很多&#xff0c;针对于SDK的简单实现官网上也有教程…

【网络编程】高性能并发服务器源码剖析

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的网络编程系列之洪水网络攻击&#xff0c;在这篇文章中&#xff0c;你将会学习到在网络编程中如何搭建一个高性能的并发服务器&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘UML图来帮助大家来理解&#xf…

教你将配置好的conda环境迁移到其它设备

文章目录 问题分析存在的方法环境要求方法步骤1. 下载conda pack2. 打包原环境3. 新设备还原环境4. 查看环境 问题分析 好不容易配置好的conda环境&#xff0c;要在另一个设备上运行&#xff0c;还要重新配置&#xff0c;好麻烦。 存在的方法 pip install -r requirement.txt …

Node.js留言板(超详细注释)

目录结构如下 app.js // 一.引入模块 var http require(http);// 用于创建 HTTP 服务器和处理 HTTP 请求 var fs require(fs);// 用于读取和写入文件 var url require(url);// 用于解析URL// 创建留言数据对象 var msgs [{ name: 牛二, content: "我是妞儿", cr…

场景:数据库死锁

来自hollis八股文 流程图 前置知识 数据库上锁锁住的不是行&#xff0c;而是索引的主键 比如我对id 1的主键进行上锁&#xff0c;实际上是对查询使用的主键的key 1 进行上锁 对非聚簇索引操作时&#xff0c;首先会对非聚簇索引上锁&#xff0c;然后在请求主键的锁 比如我…

为什么开关电源变压器的耦合不可能为100%?什么是漏感?

一、为什么开关电源变压器的耦合不可能为100%&#xff1f; 变压器耦合度是指变压器初级绕组和次级绕组之间能量传递的效率&#xff0c;它反映了变压器在电磁感应过程中&#xff0c;初级侧磁通量能够有多少比例被次级侧有效利用。理论上&#xff0c;理想的变压器耦合度应该是10…

08 Php学习:if语句、Switch语句

PHP 条件语句 当您编写代码时&#xff0c;您常常需要为不同的判断执行不同的动作。您可以在代码中使用条件语句来完成此任务。 在 PHP 中&#xff0c;提供了下列条件语句&#xff1a; if 语句 - 在条件成立时执行代码 if…else 语句 - 在条件成立时执行一块代码&#xff0c;…

Java实现短信发送并校验,华为云短信配合Redis实现发送与校验

Java实现短信发送并校验&#xff0c;华为云短信配合Redis实现发送与校验 安装sms4j和redis <dependency><groupId>org.dromara.sms4j</groupId><artifactId>sms4j-spring-boot-starter</artifactId><version>3.2.1</version> <…

WPS基础使用

个人笔记&#xff08;整理不易&#xff0c;有帮助&#xff0c;收藏点赞评论&#xff0c;爱你们&#xff01;&#xff01;&#xff01;你的支持是我写作的动力&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 个人随笔…

单路高清HDMI编码器JR-3211HD

产品简介&#xff1a; JR-3211HD单路高清HDMI编码器是专业的高清音视频编码产品&#xff0c;该产品具有支持1路高清HDMI音视频采集功能&#xff0c; 1路3.5MM独立外接音频输入&#xff0c;编码输出双码流H.264格式&#xff0c;音频MP3/AAC格式。编码码率可调&#xff0c;画面质…