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

news2024/12/28 4:39:01

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.coloradmin.cn/o/1596904.html

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

相关文章

09 Php学习:超级全局变量

超级全局变量 PHP中预定义了几个超级全局变量&#xff08;superglobals&#xff09; &#xff0c;这意味着它们在一个脚本的全部作用域中都可用。 PHP 超级全局变量列表: $GLOBALS$_SERVER$_REQUEST$_POST$_GET$_FILES$_ENV$_COOKIE$_SESSION $GLOBALS $GLOBALS 是 PHP 中的…

javaee初阶———多线程(三)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享多线程专题第三篇,关于线程安全方面的内容 如果有不足的或者错误的请您指出! 目录 八、线程安全问题(重点)1.一个典型的线程不安全的例子2.出现线程不安全的原因3.解决线程不安…

【Entity Framework】聊一聊EF中继承关系

【Entity Framework】聊一聊EF中继承关系 文章目录 【Entity Framework】聊一聊EF中继承关系一、概述二、实体类型层次结构映射三、每个层次结构一张表和鉴别器配置四、共享列五、每个类型一张表配置六、每个具体类型一张表配置七、TPC数据库架构八、总结 一、概述 Entity Fra…

高清4路HDMI编码器JR-3214HD

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

盒子模型+响应式布局 + 原型链与继承

盒子模型 是什么 css布局基础,规定了元素在页面上如何呈现,以及元素之间的空间关系 由content paddingbordermargin四部分组成 为什么 盒子模型分为 标准盒子模型: 元素的宽度与高度 只包括content IE盒子模型: 元素的宽度与高度 包括content,padding,border 在实际操作中…

【数据结构】【C++】AVL树的模拟实现(插入、判断、旋转)

文章目录 1 概念2 实现2.1 AVL树结点的定义2.2 AVL树的插入2.2.1 AVL树的插入规则2.2.2 旋转2.2.2.1 左单旋2.2.2.2 右单旋2.2.2.3 左右双旋2.2.2.4 右左双旋 2.2.3 总结 3 平衡判断4 删除5 源码 1 概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二…

软件测试/测试开发丨接口测试学习笔记分享

一、Mock 测试 1、Mock 测试的场景 前后端数据交互第三方系统数据交互硬件设备解耦 2、Mock 测试的价值与意义 不依赖第三方数据节省工作量节省联调 3、Mock 核心要素 匹配规则&#xff1a;mock的接口&#xff0c;改哪些接口&#xff0c;接口哪里的数据模拟响应 4、mock实…

【每日刷题】Day15

【每日刷题】Day15 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; 目录 1. 141. 环形链表 - 力扣&#xff08;LeetCode&#xff09; 2. 142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 3. 143. 重…

基于Python的微博舆论分析,微博评论情感分析可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

IDEA 本地库引入了依赖但编译时找不到

在使用 IDEA 开发 Maven 项目的过程中&#xff0c;有时会遇到本地库引入了依赖&#xff0c;但编译时报找不到这个依赖&#xff0c;可以使用命令处理。 打开 Terminal。 执行清理命令。 mvn clean install -Dmaven.test.skiptrue执行更新命令。 mvn -U idea:idea

YOLO-World——S

文章目录 Abstract成果 MethodPre-training Formulation: Region-Text PairsModel ArchitectureYOLO DetectorText EncoderText Contrastive HeadTraining with Online VocabularyInference with Offline Vocabulary Re-parameterizable Vision-Language PANText-guided CSPLay…

string类——常用函数模拟(C++)

本篇中&#xff0c;将会详细的介绍 Cpp 中 string 的使用&#xff0c;以及 string 类常用函数的模拟实现。对于 string 的内置函数来说&#xff0c;存在很多很冗余的用法&#xff0c;很多函数都有很多种用法&#xff0c;本篇将会讲解常用内置函数的常用用法&#xff0c;模拟函数…

Pytest小技巧:高效获取自动化测试结果

自动化测试用例在执行完成后&#xff0c;我们想要很清楚的查看到测试用例的执行结果&#xff0c;我们可以通过Pytest中的Hooks来进行获取吗&#xff1f; 其中Pytest中存在多个Hooks的函数&#xff0c;小编今天先简单介绍其中一种&#xff0c;通过pytest_runtest_makereport 获…

若依vue中关于字典的使用

文章目录 字典管理页面列表点击某个字典类型展示具体字典数据修改某一条字典数据 字典的应用一般用于select多选框中代码实现根据字典Dict的value获取Label&#xff0c;类似于通过key获得value 源码解析 字典管理页面 列表 点击某个字典类型展示具体字典数据 修改某一条字典数…

04_UART串口发送数据

1.配置芯片&#xff0c;如果PA9,PA10的UART引脚被占用&#xff0c;会自动进行重映射 2.代码 int main(void) {uint8_t temp[]"test";/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*…

windows的jar包开机自启动【搬代码】

感觉最方便的就是放到启动项目里操作步骤 winR 输入&#xff1a;shell:startup回车或点击确定 3.将自己jar包右键创建快捷方式 4.然后放进去 5.重启电脑&#xff0c;浏览器输入网址&#xff0c;就可以看到重启成功了 另外一个就是放入.exe文件的快捷方式 首先&#xff0c;…

C语言洛谷题目分享(9)奇怪的电梯

目录 1.前言 2.题目&#xff1a;奇怪的电梯 1.题目描述 2.输入格式 3.输出格式 4.输入输出样例 5.说明 6.题解 3.小结 1.前言 哈喽大家好啊&#xff0c;前一段时间小编去备战蓝桥杯所以博客的更新就暂停了几天&#xff0c;今天继续为大家带来题解分享&#xff0c;希望大…

网络管理实验二、SNMP服务与常用的网管命令

1 常用的网管命令 1.1 网络状态监视命令 包括以下命令&#xff1a;Ipconfig、ping、nslookup、dig、host ipconfig 作用&#xff1a;用来显示本机所有网卡的基本信息&#xff08;IP、掩码、网关、工作状态&#xff09;&#xff1b;用法&#xff1a;ipconfig展示&#xff1a;…

Python的国际化和本地化【第162篇—国际化和本地化】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 随着全球化的发展&#xff0c;多语言支持在软件开发中变得越来越重要。Python作为一种流行的…