Numpy(三)Numpy的函数与排序

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 npa = 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.rhkb.cn/news/160875.html

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

相关文章

【广州华锐互动】VR高层火灾应急疏散演练提供一种无风险的逃生体验

在科技进步的今天&#xff0c;我们已经能够利用虚拟现实&#xff08;VR&#xff09;技术来模拟各种紧急情况&#xff0c;其中就包括高楼火灾逃生。VR高层火灾应急疏散演练系统是一种新兴的技术&#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:\…

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

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

Discuz户外旅游|旅行游记模板/Discuz!旅行社、旅游行业门户网站模板

价值328的discuz户外旅游|旅行游记模板&#xff0c;本模板需要配套【仁天际-PC模板管理】插件使用。 模板说明 1、模板页面宽度1200px&#xff0c;简洁大气&#xff0c;较适合户外旅行、骑行、游记、摩旅、旅游、活动等类型的论坛、频道网站&#xff1b; 2、所优化的页面有&…

PixMIM论文笔记

论文名称&#xff1a;PixMIM: Rethinking Pixel Reconstruction in Masked Image Modeling 发表时间&#xff1a;2023 年 3 月 4 日 作者及组织&#xff1a;上海人工智能实验室、西蒙菲莎大学、香港中文大学 GitHub&#xff1a;https://github.com/open-mmlab/mmselfsup/tree/d…

数据结构上机实验——栈和队列的实现、栈和队列的应用、进制转换、约瑟夫环问题

文章目录 栈和队列上机实验1.要求2.栈的实现&#xff08;以顺序栈为例&#xff09;3.队列的实现&#xff08;以顺序队列为例&#xff09;4.利用栈实现进制转换5.利用队列解决约瑟夫环问题6.全部源码Stack.hQueue.htest.cpp 栈和队列上机实验 1.要求 1.利用栈的基本操作实现将任…

uniapp-vue3-微信小程序-标签选择器wo-tag

采用uniapp-vue3实现, 是一款支持高度自定义的标签选择器组件&#xff0c;支持H5、微信小程序&#xff08;其他小程序未测试过&#xff0c;可自行尝试&#xff09; 可到插件市场下载尝试&#xff1a; https://ext.dcloud.net.cn/plugin?id14960 使用示例 <template>&…

WPS、Excel表格增加一列,序列1到任意大小 / 填充某个范围的数字到列

Excel添加一列递增的数字方法有如下&#xff1a; 一、最常用的&#xff0c;使用鼠标放到右下角下拉增加 1、选中起始框的右下角&#xff0c;直到显示黑色实心十字 2、一直向下拖动 3、成功 这种填充方式是最常用的&#xff0c;100以内都可以轻松瞬间完成 1~100填充 但是如果…

Jmeter执行接口自动化测试-如何初始化清空旧数据

需求分析&#xff1a; 每次执行完自动化测试&#xff0c;我们不会执行删除接口把数据删除&#xff0c;而需要留着手工测试&#xff0c;此时会导致下次执行测试有旧数据我们手工可能也会新增数据&#xff0c;导致下次执行自动化测试有旧数据 下面介绍两种清空数据的方法 一、通过…

Spring framework Day19:Spring AOP xml配置示例二

一、开始学习 1、新建项目&#xff0c;结构如下 2、添加 spring 依赖 <!-- spring 的核心依赖 --><dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework&l…

将 vue2+ElementU 项目打包成安卓app

目标&#xff1a;将vue项目打包成安卓app 工具&#xff1a;HbuilderX 1.在HbuilderX中创建一个 5App 项目 创建好的app项目目录 2.将vue项目打包 2.1 在 vue.config.js 中添加公共路径&#xff08;解决打包后的app图片不显示问题&#xff09; module.exports defineConfig(…

软件测试(一)概念

软件测试 软件测试的生命周期&#xff1a; 需求分析→测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估 需求分析&#xff1a;需求是非完整&#xff0c;需求是否正确测试计划&#xff1a;确定软件由谁测试&#xff0c;什么时候开始&#xff0c;什么时候结束&#xff0c;…

Java Kids-百倍提速【Mac IOS】

引言&#xff1a;当今社会&#xff0c;创新和提升效率已经成为了大家普遍的追求。无论是个人生活还是企业经营&#xff0c;我们都希望能够以更高的效率完成任务&#xff0c;节省时间和资源。因此&#xff0c;提速成为了一种时代的要求&#xff0c;而"Java Kids 百倍提速&q…

博客项目(前后端分离)(servlet实战演练)

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;实战项目 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;! 文章目录 前言…

Vue 网络处理 - axios 异步请求的使用,请求响应拦截器

目录 一、axiox 1.1、axios 简介 1.2、axios 基本使用 1.2.1、下载核心 js 文件. 1.2.2、发送 GET 异步请求 1.2.3、发送 POST 异步请求 1.2.4、发送 GET、POST 请求最佳实践 1.3、请求响应拦截器 1.3.1、拦截器解释 1.3.2、请求拦截器的使用 1.3.3、响应拦截器的使用…

Umi3实战教程

一、框架介绍 umi是蚂蚁金服的前端开发框架&#xff0c;它内置了路由、web/移动端UI库、数据流、权限控制、常用hooks库、构建、部署、测试、等等一些工具&#xff0c;几乎涵盖了正常前端开发要用到的所有工具。 二、环境准备 pnpm 相比npm、yarn&#xff0c;pnpm更小更快扁平…

虚幻引擎:如何实现骨骼重定向

前言&#xff1a; 为什么需要做骨骼重定向&#xff0c;因为当前角色素材没有对应的动画&#xff0c;这时候我们可以找个身高体型差不多的带有动画素材的另一个角色来做重定向&#xff0c;这样我们就可以得到我们需要的动画素材了。 1.首先创建两个骨骼的IK绑定 2.然后给两个骨骼…

【算法|前缀和系列No.2】牛客网 DP35 【模板】二维前缀和

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【牛客网刷题】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希…

发面试题:(四)synchronized和lock区别

synchronized 关键字 synchronized关键字解决的是多个线程之间访问资源的同步性&#xff0c;synchronized关键字可以保证被它 修饰的方法或者代码块在任意时刻只能有一个线程执行。 另外&#xff0c;在 Java 早期版本中&#xff0c; synchronized属于重量级锁&#xff0c;效率…

vue3学习源码笔记(小白入门系列)------KeepAlive 原理

目录 说明组件是如何被缓存的&#xff0c;什么时候被激活对于KeepAlive 中组件 如何完成激活的对于KeepAlive 中组件 如何完成休眠的 总结 说明 Vue 内置了 KeepAlive 组件&#xff0c;实现缓存多个组件实例切换时&#xff0c;完成对卸载组件实例的缓存&#xff0c;从而使得组…