Numpy(三)Numpy的函数与排序

news2025/7/20 17:32:50

Numpy(三)Numpy的函数与排序

一、通用函数

*通用函数使得Numpy数组操作用于数组中的每一个函数。它通常用C语言实现,可以提升执行效率。

1.1数学运算函数

1.1.1算数运算函数:通常使用的加、减、乘、除、乘方等数学运算符号
①数学运算可以通过符号进行运算
import numpy as np
a=np.array([1,2,3,4,5,6])
b=np.array([2,4,6,8,10,12])
print('加法:',a+b)
print('减法:',a-b)
print('乘法',a*b)
print('除法',a/b)
print('乘方',a**2)


加法: [ 3  6  9 12 15 18]
减法: [-1 -2 -3 -4 -5 -6]
乘法 [ 2  8 18 32 50 72]
除法 [0.5 0.5 0.5 0.5 0.5 0.5]
乘方 [ 1  4  9 16 25 36]
②使用算数运算函数进行运算
通用函数名称说明
add()y=a+b 加法运算
subtract()y=a-b 减法运算
multiply()y=a*b 乘法运算
divide()y=a/b 除法运算
floor_divide()y=a//b 整除运算
power()y=a**b 乘方运算
操作:
import numpy as np
a=np.array([1,2,3,4,5,6])
b=np.array([2,4,6,8,10,12])
c=np.add(a,b)
d=np.subtract(a,b)
e=np.multiply(a,b)
f=np.divide(a,b)
g=np.floor_divide(a,b)
h=np.power(a,b)
print('加法',c)
print('减法',d)
print('乘法',e)
print('除法',f)
print('整除',g)
print('乘方',h)

加法 [ 3  6  9 12 15 18]
减法 [-1 -2 -3 -4 -5 -6]
乘法 [ 2  8 18 32 50 72]
除法 [0.5 0.5 0.5 0.5 0.5 0.5]
整除 [0 0 0 0 0 0]
乘方 [          1          16         729       65536     9765625 -2118184960]
1.1.2关系运算函数——将两个数组对应元素进行逻辑运算,结果用布尔值表示
①用符号进行运算
import numpy as np
a=np.array([1,22,54,6,109,65])
b=np.array([22,14,96,6,82,125])
print(a==b)
print(a<b)
print(a>b)
print(a!=b)
print(a<=b)
print(a>=b)

[False False False  True False False]
[ True False  True False False  True]
[False  True False False  True False]
[ True  True  True False  True  True]
[ True False  True  True False  True]
[False  True False  True  True False]
②使用关系函数进行运算
通用函数说明
equal()a==b
not_equal()a!=b
less()a<b
less_equal()a<=b
greater()a>b
greater_equal()a>=b
import numpy as np
a=np.array([1,22,54,6,109,65])
b=np.array([22,14,96,6,82,125])
c=np.equal(a,b)
d=np.not_equal(a,b)
e=np.less(a,b)
f=np.less_equal(a,b)
g=np.greater(a,b)
h=np.greater_equal(a,b)
print('两数组对应元素是否相等?',c)
print('两数组对应元素是否不相等?',d)
print('数组a的元素是否小于b?',e)
print('数组a的元素是否小于等于b',f)
print('数组a的元素是否大于b',g)
print('数组a的元素是否小于等于b',h)

两数组对应元素是否相等? [False False False  True False False]
两数组对应元素是否不相等? [ True  True  True False  True  True]
数组a的元素是否小于b? [ True False  True False False  True]
数组a的元素是否小于等于b [ True False  True  True False  True]
数组a的元素是否大于b [False  True False False  True False]
数组a的元素是否小于等于b [False  True False  True  True False]

2.自定义通用函数

1.自定义函数的特点:可以通过通用函数(ufunc)对数组内每一个函数进行操作处理。
2.语法格式:
ufunc=numpy.frompyfunc(func,nin,nout)
其中:func可以是任何的python内置函数,也可以是自定义的函数
nin是传入数组的参数个数
nout返回数组的个数

二、其他函数

1.随机数

①随机数函数
A.常用随机数
1.随机浮点数,返回[0.0,1.0)随机浮点数,即大于等于0.0小于1.0
numpy.random.rand()
2.返回[low,high)随机整数,如果high省略则返回[0,low)的随机整数
numpy.random.randint(low,high,size,dtype)
*实例
1.一维随机浮点型数组
import numpy as np
a=np.random.rand(6)
print(a)
print(a.dtype)

[0.71008962 0.9789184  0.85169683 0.35812926 0.14769591 0.59963349]
float64
2.二维随机浮点型数组
import numpy as np
a=np.random.rand(3,2)
print(a)
print(a.size)
print(a.dtype)
print(a.shape)

[[0.88644622 0.44110475]
 [0.09019004 0.4413119 ]
 [0.3187254  0.91479723]]
6
float64
(3, 2)
3.确定范围的一维随机整数数组(25-100)
import numpy as np
a=np.random.randint(25,100,10,dtype=int)
print(a)

[88 92 69 68 62 93 76 36 82 98]
4.确定范围的二维随机整数数组(25-100)
import numpy as np
a=np.random.randint(25,100,(3,3),dtype=int)
print(a)

[[92 48 39]
 [46 60 64]
 [45 89 60]]
B.正态分布随机数
1.正态分布:
1.正态分布(Normal distribution),也称“常态分布”,又名高斯分布(Gaussian distribution),最早由棣莫弗(Abraham de Moivre)在求二项分布的渐近公式中得到。C.F.高斯在研究测量误差时从另一个角度导出了它。P.S.拉普拉斯和高斯研究了它的性质。是一个在数学、物理及工程等领域都非常重要的概率分布,在统计学的许多方面有着重大的影响力。 

2.正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。

3.若随机变量X服从一个数学期望为μ、方差为σ2的正态分布,记为N(μ,σ2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。
2.正态分布曲线

在这里插入图片描述

3.返回标准正态分布随机数:返回标准正态分布随机数,参数与rand函数相同。(标准正态分布平均数为0,标准值为1)
numpy.random.randn()
4.返回正态分布,loc是平均值,scale是标差。
numpy.random.normal(loc,scale,size) 
*实例
1.创建一个(3*3)的标准正态分布随机数组
import numpy as np
a=np.random.randn(3,3)
print(a)

[[-1.26898639  0.96284579 -0.64463162]
 [-0.24216331  0.6258301   0.02254831]
 [-1.13563563  1.58121951 -0.32983854]]
2.创建一个(3*3)的正态分布数组,平均值为5标准差为2
import numpy as np
a=np.random.normal(5,2,(3,3))
print(a)

[[9.37195124 7.81048746 7.88487784]
 [8.11798244 5.51997449 5.83350753]
 [4.60237048 7.26362544 3.27421218]]

三、排序函数

1.轴排序:按照轴对数组进行排序函数sort,将同一轴上的数按照指定顺序排列。

2.语法格式:

numpy.sort(a,axis,kind,order)
1.a:要排序的数组
2.axis:数组的轴,按指定轴进行排序,默认是-1表示最后一个轴。
3.kind:表示排序的类型(快速排序、希尔排序、堆排序、冒泡排序、二路归并排序)
排序类型代码
快速排序quicksort
归并排序mergesort
堆排序heapsort
4.order:排序字段

3.实例

*对[1,3,4,2,11,5,6,9,8]进行排序
import numpy as np
a=np.array([1,3,4,2,11,5,6,9,8])
b=np.sort(a)
print(b)

[ 1  2  3  4  5  6  8  9 11]
*对二维数组的横向轴进行排列(axis=1)
import numpy as np
a=np.array([[120,6,35,78],[53,95,47,96],[2,43,652,3523],[484,45694,5566,6798]])
b=np.sort(a,axis=1)
print('原来数组为:',a)
print('经过排序的数组为:',b)

原来数组为: [[  120     6    35    78]
 [   53    95    47    96]
 [    2    43   652  3523]
 [  484 45694  5566  6798]]
经过排序的数组为: [[    6    35    78   120]
 [   47    53    95    96]
 [    2    43   652  3523]
 [  484  5566  6798 45694]]
*对二维数组的纵轴进行纵向排列(axis=0)
import numpy as np
a=np.array([[120,6,35,78],[53,95,47,96],[2,43,652,3523],[484,45694,5566,6798]])
b=np.sort(a,axis=0)
print('原来数组为:',a)
print('经过排序的数组为:',b)

原来数组为: [[  120     6    35    78]
 [   53    95    47    96]
 [    2    43   652  3523]
 [  484 45694  5566  6798]]
经过排序的数组为: [[    2     6    35    78]
 [   53    43    47    96]
 [  120    95   652  3523]
 [  484 45694  5566  6798]]

四、聚合函数

1.求和函数(sum)

求和函数:对数组内规定的某轴上的每一个元素进行求和运算
2.语法格式
方法一:使用numpy.sum()
numpy.sum(a,axis=None)
*实例
一维数组
import numpy as np
a=np.array([142,334,844,54,535,24,442,34,632,5342,43,75,33,23,12])
b=np.sum(a)
print(b)

8569
二维数组
import numpy as np
a=np.array([[1,321,532],[23,987,678],[90,832,675]])
b=np.sum(a,axis=1)
c=np.sum(a,axis=0)
print('原数组:',a)
print('按行求和',b)
print('按列求和',c)

原数组: [[  1 321 532]
 [ 23 987 678]
 [ 90 832 675]]
按行求和 [ 854 1688 1597]
按列求和 [ 114 2140 1885]

2.最大值函数(max)

1.最大值函数:对数组内规定的某轴上的元素找出其最大值。
2.语法格式
①使用numpy.amax()
import numpy as np
a=np.array([1,52,63,45,69,22,0,13,2,54,89,6,14])
b=np.amax(a)
print('The max number is ',b)

The max number is  89
import numpy as np
a=np.array([[1,52,63],[45,69,22],[0,13,2],[54,89,6]])
b=np.amax(a,axis=0)
print('The max number is ',b)

The max number is  [54 89 63]
②使用numpy.nanmax()——此函数可以忽略NAN(Not a number,非数)
import numpy as np
a=np.array([[1,52,63],[45,69,22],[0,13,np.nan],[54,89,6]])
b=np.nanmax(a,axis=0)
print('The max number is ',b)
print(a)

The max number is  [54. 89. 63.]
[[ 1. 52. 63.]
 [45. 69. 22.]
 [ 0. 13. nan]
 [54. 89.  6.]]
 
 //其中,np.nan表示一个非数元素。

3.最小值函数(min)

1.最小值函数:对数组内规定的某轴上的元素找出其最小值
2.语法格式:
①使用numpy.amin()
import numpy as np
a=np.array([[1,52,63],[45,69,22],[0,13,666],[54,89,6]])
b=np.amin(a,axis=0)
print('The min number is ',b)
print(a)

The min number is  [ 0 13  6]
[[  1  52  63]
 [ 45  69  22]
 [  0  13 666]
 [ 54  89   6]]
②使用numpy.nanmin()——性质同numpy.nanmin()
import numpy as np
a=np.array([[1,52,63],[45,69,22],[0,13,np.nan],[54,89,6]])
b=np.nanmin(a,axis=0)
print('The min number is ',b)
print(a)

The min number is  [ 0. 13.  6.]
[[ 1. 52. 63.]
 [45. 69. 22.]
 [ 0. 13. nan]
 [54. 89.  6.]]

4.平均值函数(mean)

1.平均值函数:对数组内规定的某轴上的元素求和在除元素个数
2.语法规则:
*对二维数组整体求平均数
import numpy as np
a=np.array([[1,4,6],[22,53,43],[65,76,54]])
b=np.mean(a)
print(b)

36.0
*对二维数组行求平均数
import numpy as np
a=np.array([[1,4,6],[22,53,43],[65,76,54]])
b=np.mean(a,axis=1)
print(b)

[ 3.66666667 39.33333333 65.        ]
*对二维数组列求平均数
import numpy as np
a=np.array([[1,4,6],[22,53,43],[65,76,54]])
b=np.mean(a,axis=0)
print(b)

[29.33333333 44.33333333 34.33333333]

5.加权平均数函数(average)

1.加权平均数:对数组内某轴上的元素附有一定的权值,得出结果为(次数*权值)
2.语法规则:
*对整体求加权平均数
import numpy as np

a = np.array([1, 3, 5, 7, 9])
b = np.average(a, weights=[0.1, 0.2, 0.5, 0.1, 0.1])//weights为一个数组,数组内为每一个数对应的权重。
print(b)

4.800000000000001

6.剔除多余元素的函数(unique)

1.剔除多于函数:unique函数可以剔除数组内多余的函数并且从小到大将元素排列。
2.语法格式:
numpy.unique(a,return_index=False,axis=None)
标志属性
a原始数组
return_index若设置为Ture则返回原始数组中的索引数组
axis
3.实例
①将一维数组内部的数字去重后排序
import numpy as np
a=np.array([1,3,2,4,3,12,656,2,3,3,53,512,534,132,33,52,3,2,1,3,44,554,343])
b=np.unique(a)
print(b)

[  1   2   3   4  12  33  44  52  53 132 343 512 534 554 656]
②将二维数组中列去重后排序
import numpy as np
a=np.array([[1,3,2,4],[3,12,656,2],[3,3,53,512],[534,132,33,52],[3,2,1,3],[4,554,343,646]])
b=np.unique(a,axis=0)
print(b)

[[  1   3   2   4]
 [  3   2   1   3]
 [  3   3  53 512]
 [  3  12 656   2]
 [  4 554 343 646]
 [534 132  33  52]]



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

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

相关文章

HCIA --- VLAN实验配置

一、各交换机上配置&#xff1a; 1、各交换机上创建VLAN 2、交换机上的各个接口划分到对应的VLAN中 3、将与交换机、路由器相连的接口创建trunk干道 SW1&#xff1a; [sw1]vlan batch 2 to 3 批量创建VLAN2-3 [sw1]interface Ethernet0/0/1 单独将某个接口划分到对应…

【Release】Photoshop ICO file format plug-in 3.0

【Introduction】 The Photoshop ICO plug-in is a file format plug-in developed for Photoshop, which allows Photoshop to directly read and write ICO format files. Because Photoshop has powerful pixel bitmap editing functions, it has many users and a good us…

Kotlin注释

一、设置注释样式 按需配置 二、单行多行注释 fun main() {// 单行注释println("单行注释") //单行注释/** 多行注释* */println("多行注释") }

<el-drawer>中在添加弹窗,遮罩层被覆盖

添加这个属性 <el-dialog :append-to-body"true"> </el-dialog>

nginx.2——优化和防盗链

1、隐藏版本号 bug多。更新版本速度比较快&#xff0c;所以一旦版本号暴露出去&#xff0c;有可能给对方提供攻击的漏洞。 方法一 vim /usr/local/nginx/conf/nginx.conf 开server_tokens on; 关server_tokens off; 在http大模块中修改&#xff0c;不再server中&#xf…

腾讯云最新优惠活动入口整理分享

腾讯云作为国内知名的云计算服务提供商&#xff0c;一直以来都为广大的个人用户和企业用户提供优质、稳定、安全的云服务。为了帮助大家更好地利用腾讯云&#xff0c;下面为大家整理分享一些腾讯云的最新优惠活动入口&#xff0c;希望能够为大家带来一些帮助和便利。 一、腾讯云…

误删除数据恢复?恢复数据,这3个方法足够!

“我已经遇到很多次数据误删除的情况了&#xff01;每次都要重写文件。但是这次的文件比较紧急&#xff0c;重写肯定来不及了&#xff0c;想问问大家有没有什么误删除数据恢复的方法呀&#xff1f;” 在使用电脑时&#xff0c;很多用户都不可避免会出现误删数据的情况。面对重要…

基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

YOLOv5算法改进(7)— 添加单层注意力机制(包括代码+添加步骤+网络结构图)

前言:Hello大家好,我是小哥谈。注意力机制是近年来深度学习领域内的研究热点,可以帮助模型更好地关注重要的特征,从而提高模型的性能。注意力机制可被应用于模型的不同层级,以便更好地捕捉图像中的细节和特征,这种模型在计算资源有限的情况下,可以实现更好的性能和效率。…

TrustZone

TrustZone技术 让我们从最重要的问题开始&#xff1a;为什么存在TrustZone技术&#xff0c;它防御什么&#xff1f;保护用 C 和 C 编写的大型程序免受黑客攻击可能是一个挑战。内存损坏漏洞是一个常见问题&#xff0c;尽管消除它们是安全工程师的核心目标&#xff0c;但从操作…

AI_Neural Network_Note(一)

Input Data / Feature textimageaudiosensor data For RGB Image 三维矩阵 64 * 64 *3 每个element都对应着一个像素点的颜色值 Definition RGB 图像 ——三个独立的矩阵&#xff08;即三个二维数组&#xff09;&#xff0c;这三个矩阵分别与此图像的红色Red、绿色Green和…

YOLO目标检测——安全帽手套数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;主要应用于监控视频中工作人员是否佩戴安全帽或手套的场景。数据集说明&#xff1a;YOLO目标检测数据集&#xff0c;类别有&#xff1a;手套、头盔、非头盔、人、鞋、背心、赤膊&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富。使用la…

【MyBatis系列】- 什么是MyBatis

【MyBatis系列】- 什么是MyBatis 文章目录 【MyBatis系列】- 什么是MyBatis一、学习MyBatis知识必备1.1 学习环境准备1.2 学习前掌握知识二、什么是MyBatis三、持久层是什么3.1 为什么需要持久化服务3.2 持久层四、Mybatis的作用五、MyBatis的优点六、参考文档一、学习MyBatis知…

LDMOS与VDMOS概述

目录 组会PPT展示&#xff08;10.13&#xff09;LDMOS器件概述VDMOS器件概述前景展望 组会PPT展示&#xff08;10.13&#xff09; LDMOS器件概述 VDMOS器件概述 前景展望

【代码随想录】算法训练营 第四天 第二章 链表 Part 2

24. 两两交换链表中的节点 思路 为了使得头结点的处理不用特殊化&#xff0c;所以依然设置一个虚拟头结点dummy&#xff0c;每次要交换的时候都要判断接下来的两个结点是否为空结点&#xff0c;即nullptr&#xff0c;若非空即可交换&#xff1b; 交换的时候&#xff0c;用一个…

基于springboot实现汉服文化分享平台项目【项目源码+论文说明】

摘要 本论文主要论述了如何使用JAVA语言开发一个汉服文化平台网站 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述汉服文化平台网站的当前背景以及系统开发的…

PostgreSQL性能调优:优化查询和索引设计

随着数据量的增长和业务需求的变化&#xff0c;数据库性能成为了许多企业关注的焦点之一。在众多的数据库管理系统中&#xff0c;PostgreSQL因其稳定性和可靠性而备受青睐。然而&#xff0c;即使是最强大的系统也需要合适的调优&#xff0c;以确保其能够高效地处理大规模数据和…

离线 notepad++ 添加到右键菜单

复制下面代码&#xff0c;修改文件后缀名为&#xff1a;reg Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad] "Notepad" "Icon""D:\\Notepad\\notepad.exe,0"[HKEY_CLASSES_ROOT\*\shell\NotePad\Command] "D:\…

从旅游发展大会,看长沙的“落子”与“棋道”

文&#xff5c;新熔财经 作者&#xff5c;石榴 中秋国庆假期作为今年的最后一个小长假&#xff0c;全国各地果断祭出自己的“杀手锏”&#xff0c;不过&#xff0c;虽是百花齐放&#xff0c;但星城长沙仍然是最亮眼的存在之一。 全省文化旅游统计监测系统显示&#xff0c;中…

基于梯度优化的BP神经网络(分类应用) - 附代码

基于梯度优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于梯度优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.梯度优化BP神经网络3.1 BP神经网络参数设置3.2 梯度算法应用 4.测试结果&#xff1a;5.M…