python numpy库作用_python Numpy库

一.导入库

import numpy as np

二.创建

1.numpy中只有一种数据类型:ndarray,表示n维数组

创建ndarray数组:

-由列表或者元组类型创建数组

-有元组类型创建数组

-创建特殊数组

2.采用np.array函数来创建,语法为:

np.array(列表或元组)

将参数列表或者元组转换成ndarray类型.相当于强制类型转换

a=np.array([1,2,3,5,19]) 由列表创建一维数组

b=np.array([[1,1,1],[2,2,2],[3,3,3]]) 由列表创建二维数组

a=np.array((1,2,3,5,19)) 由元组创建一维数组

b=np.array(((1,1,1),(2,2,2),(3,3,3))) 由元组创建二维数组

b=np.array(([1,1,1],(2,2,2),[3,3,3])) 混搭的。。。

创建数组时,可以用dtype指定数据类型:

a=np.array([1,2,3,5,19],dtype=np.int32)

当不指定dtype的时候,numpy会根据数据自动匹配合适的类型

三.数组类型的属性

生成一个数组 : b=np.array([[1,1,1],[2,2,2],[3,3,3]])

.ndim:数据是几维的:b.ndim的值为2

.shape:数据的形状,即尺寸:b.shape的结果为(3,3)

.size: 数组中元素的数量 b.size的值为9

.dtype: 数组元素的数据类型 b.dtype 的结果为 int32

.itemsize:数组中元素所占的字节数

四.利用函数创建特殊数组

1.全零数组

①np.zeros(shape, dtype = float)

shape为数组的形状,是列表类型或者元组类型

dtype是数据的类型,可以是整数或者实数,该参数可以省略

例子:a=np.zeros((3,3),dtype=int),则a里面是一个3*3的全零数组

②np.zeros_like(a)

a为一个已知的数组,np.zeros_like(a)生成一个与a形状相同的全零数组

a=np.array([[1,2],[2,3],[3,5]]) # a是一个三行两列的矩阵

则np.zeros_like(a) 生成一个三行两列的全零数组

2.全1数组

①numpy.ones(shape, dtype)

np.ones: 创建指定形状的数组,数组元素以 1 来填充

例如:np.ones([5,5],dtype=np.int32) #五行五列全是1的数组

②np.ones_like(a)

参数a为一个已知的数组,该函数根据数组a的形状生成一个全1的数组

3.全是某个值的数组

①np.full(shape,fill_value)

根据指定的shape生成一个全是fill_value的数组

例如:np.full((4,7),8) #四行七列全是8的数组

②np.full_like(a,8) 生成一个与数组a相同,且里面元素都是8的数组

5.np.eye生成单位矩阵

np.eye(n)

生成一个n行n列的单位矩阵

6.np.arange选定数值范围创建数组

语法 np.arange(start, stop, step, dtype)

start :起始值,默认为0

stop : 终止值(不包含)

step : 步长,默认为1

dtype :类型,可以省

例子:

np.arange(10)          #输出array([0,1,2,3,4,5,6,7,8,9])

np.arange(2,15)         #输出array([2,3,4,5,6,7,8,9,10,11,12,13,14])

np.arange(3,20,5)        #输出array([3,8,13,18])

c=np.arange(9).reshape(3,3)#输出array([[0, 1, 2],

[3, 4, 5],

[6, 7, 8]])

注意:使用np.arange生成的数组都是一维的,如何变成多维呢?使用数组的reshape方法

例如:np.arange(100).reshape(10,10)

方法的调用!!!! 用变量名.方法名

七.创建线性一维数组

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

start : 序列的起始值

stop : 序列的终止值,如果endpoint为true,该值包含于数列中

num : 要生成的等步长的样本数量,默认为50

endpoint : 该值为True时,数列中包含stop值,反之不包含,默认是True

retstep : 如果为True时,生成的数组中会显示间距,反之不显示

dtype : ndarray的数据类型

例如:a = np.linspace(1,10,10) array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])

八.生成随机数组

1.numpy中有个随机数子库,叫做np.random。

里面包含很多随机数生成算法,使用的时候,采用 np.random.方法名 的形式去使用。

①np.random.rand(d0,d1,...dn) 根据d0,d1,...dn的值生成[0,1)之间均匀分布的随机数组。

②np.random.randn(d0,d1,...dn) 根据d0,d1,...dn的值生成[0,1)之间标准正太分布的随机数组。

③np.random.randint(low,high,shape)在[low,high)区间生成shape形状的随机数组

例如:np.random.randint(1,10,[5,5])

np.random.randint(1,10) 生成1-10之间的随机整数(一个整数)

④np.random.seed(s) 随机数种子函数 : 参数必须是整数类型

⑤np.random.shuffle(a) 把数组a打乱顺序

⑥np.random.choice(a,size,replace=False)

解释:从数组a中,随机等概率选取数据,构成shape形状的数组。

当replace的值默认为True,此时,数据可以被重复选取,当不希望重复选取数据的时候,修改replace=False

⑦np.random.uniform(low,high,size):在[low,high)之间等概率的抽取元素,产生形状为size的数组。

⑧np.random.normal(loc,scale,size):产生均值为loc,方差为scale的尺寸为size的符合正态分布的数组

⑨np.poisson:生成泊松分布的数组

九.数组的变换-改变形状

1.reshape函数: 改变数组的形状,不改变数组元素的个数,原数组不变,生成一个和原数组数据一样的新数组。

有两种reshape。一种是np的函数,一种是数组的方法.

假设a=np.arange(100), 则a为含有100个元素的一维数组。则改变a为10*10的数组,

方法有:

b=np.reshape(a,(10,10))   # np的函数

b=a.reshape(10,10)     # 数组的方法

b=a.reshape((10,10))

执行完上面的代码后,b为10*10的数组,而a还是含有100个元素的1维数组

2.resize((shape),refcheck=True) #refcheck默认是true,自身调用时须改成false

功能与reshape相同,但是改变原数组

a.resize((1,9)) a变为一维数组了。

①当resize()是用np调用的时候,这时需要第一个参数是矩阵本身,然后记得加括号,是改正后 的矩阵维度, 这时有返回值,可以打印出

例如:>>>a=np.arange(100)

>>> b=np.resize(a,(1,9))

>>> b

输出:array([[0, 1, 2, 3, 4, 5, 6, 7, 8]])

②当resize()是矩阵自己调用自己时,函数没有返回值,因此是None,但是也改变了ndarray的值,

这时再打印ndarray就是被resize()改变后的值 ***自身调用时,refcheck=False

例如:>>>a=np.arange(100)

>>>a.resize((1,9),refcheck=False)

>>>a

结果:array([[0, 1, 2, 3, 4, 5, 6, 7, 8]])

十.数组的变换-扁平化

1.flatten()函数,数组扁平化,也就是把多维数组变成一维数组,但是原数组不变。

假设a是一个二维数组,则a.flatten(),得到一个按行展开的一维数组

例如:>>>a=np.random.randint(1,5,[3,3])

>>>a

结果:array([[4, 2, 2],

[4, 1, 1],

[1, 3, 2]])

>>>a.flatten()

结果:array([4, 2, 2, 4, 1, 1, 1, 3, 2])

>>>a

结果:array([[4, 2, 2],

[4, 1, 1],

[1, 3, 2]])

2.a.astype()函数 改变类型的函数

b=a.astype(np.float16),生成一个新数组,新数组中与原数组元素相同,类型不同。

注意:原数组类型不发生变化

例如:>>>a=np.random.randint(1,5,[3,3])

>>>a

结果:array([[4, 2, 4],

[2, 3, 4],

[1, 1, 4]])

>>>a.astype(np.float16)

结果:array([[4., 2., 4.],

[2., 3., 4.],

[1., 1., 4.]], dtype=float16)

>>>a

结果:array([[4, 2, 4],

[2, 3, 4],

[1, 1, 4]])

3.a.tolist()函数 把数组a变成列表

a.T 与a.transpose() 数组的转置 ,都不改变原数组

例如:>>>a=np.random.randint(1,5,[3,3])

>>>a

结果:array([[4, 4, 4],

[3, 4, 2],

[3, 3, 1]])

>>>a.tolist()

结果:[[4, 4, 4], [3, 4, 2], [3, 3, 1]]

>>>a.T

结果:array([[4, 3, 3],

[4, 4, 3],

[4, 2, 1]])

>>>a.transpose()

结果:array([[4, 3, 3],

[4, 4, 3],

[4, 2, 1]])

>>>a

结果:array([[4, 4, 4],

[3, 4, 2],

[3, 3, 1]])

十一.常用函数及其使用

1.统计函数

使用方法:①np.函数名 ②数组变量.函数名

sum

求和

mean

求平均值

std

求标准差

var

求方差

median

求中位数

max

求最大值

min

求最小值

average()

加权平均数

举例:

求和:

np.sum(a) 和 a.sum(): 求数组a中所有元素的和。

np.sum(a,axis=0)和 a.sum(axis=0) : 对数组a按行求和

np.sum(a,axis=1)和 a.sum(axis=0) : 对数组a按列求和

求均值

np.mean(a)和a.mean() 求数组a中所有元素的均值

np.mean(a,axis=0)和a.mean(axis=0) 求数组a中所有列的均值

np.mean(a,axis=1)和a.mean(axis=1) 求数组a中所有行的均值

其它统计函数的用法类似

2.数学函数

np.sin()

正弦

np.cos()

余弦

np.tan()

正切

np.arcsin()

反正弦

np.arccos()

反余弦

np.arctan()

反正切

np.degree()

将弧度转换为角度

np.ptp(a)

计算数组a种最大值与最小值的差

3.舍入函数

np.around()

四舍五入

np.floor()

向下取整

np.ceil()

向上取整

4.排序函数

np.sort(a, axis, kind):对数组a按axis所指定的轴进行排序,排序采用kind参数指定的算法。kind参数可以省略

十二.数组的索引与切片

1.一维数组的索引和切片

索引:a[0],a[-1]

切片:数组名[起始位置:结束位置:步长] a[1:10:2]

2.多维数组的索引和切片

索引:a[0,5,7] 多个维度之间用逗号分隔。

a[0,5,7]表示 第一维数据,选第0个,第2维数据,选第5个,第三维数据,选第7个

切片: ①选择多行: a[起始行:结束行]

②格式: a[m:n,p:q] 第一维选择m到n行,不包括n,第2维选择p到q列,不包括q

3.列表做索引:

①选择多行,把多行包装成列表,作为索引,

如:a[[0,3]]表示选择第0行和第3行。当选择整行,不考虑列的时候,可以不写列

②np.ix_函数: 能把两个一维数组 转换为 一个用于选取方形区域的索引器。

实际意思就是,直接往np.ix_()里扔进两个一维数组[1,3],[2,4,5],就能先选1,3行,再选2,4,5列。

④布尔索引--条件索引

大于5的数: a[a>5]

能被5整除的数a[a%5==0]

既能被2整除,又大于5的数:b=a[a%2==0] c=b[b>5]

十三.ndarray类型数据的运算

1.数组与标量(单个数据)之间的运算:相当于数组中的每个元素与标量之间的运算,例如:a=np.arange(10).reshape(2,5) a+5,相当于a中每个元素都加了5,

2.数据规范化

如何规范化:随机生成一个二维数组,对数组进行规范化,即数组中每个元素减去数组元素的均值除以数组元素的方差:

a=a.mean()/a.std()

3.numpy中一元函数:作用到元素上

对数组运算,实际上是对数组中每个数据进行运算。

np.abs() 求数组中各个元素的绝对值,结果可以是整数或者实数

np.fabs() 求数组中各个元素的绝对值,结果是实数

np.sqrt() 求数组中各个元素的平方根

np.log np.log10 np.log2 计算数组中各个元素的自然对数、以10为底的对数, 以2为底的对数

np.ceil()和np.floor分别表示的是对数组中各个元素进行取整

np.rint()对数组中每个元素进行四舍五入

np.sin() np.cos() np.tan() np.cosh() np.sinh() np.tanh() 对数组中的每个元素进行三角运算。

np.sign() 计算数组中每个元素的符号值,结果为1,0,或-1分别表示正数,0和负数

np.exp() 计算数组中每个元素的指数值

4.numpy中的二元函数和二元运算

两个同尺寸的数组加减乘除,相当于对应元素的加减乘除

np.maximum(a,b) 求两个数组a和b对应元素的最大值

np.minimum(a,b) 求两个数组a和b对应元素的最小值

np.mod(a,b) a中元素除以b中元素的余数

np.copysign(x,y) 将数组y中各元素的符号赋值给x中元素的符号

关系运算符号:> 、>=、< 、<= 、 ==、 !=对应元素进行比较

a[a>b] 在a中找出比数组b大的数

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

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

相关文章

oracle 关闭如何启动,ORACLE启动和关闭实例

实例启动和关闭&#xff1a;一.数据库启动的几种状态(1)SQL>startup 启动的过程&#xff1a;a. 例程启动b. 数据库加载c. 数据库打开(2)SQL>startup nomount例程启动阶段所有做的工作&#xff1a;a. 按以下顺序读取初始化参数文件&#xff1a;首先读取 spfileSID.ora &am…

python文本解析_如何通过python进行文本解析?

我希望使用python解析数据&#xff0c;以便将其导入Excel电子表格中。我需要一些帮助来实现过程的自动化。文件内容包括&#xff1a;ok: [wrt02.test1] > { "msg": "nxos" } TASK [checklist : OUTPUT IOS_XR] ***************************************…

linux监测node进程,通过node_exporter监控linux服务器一

前言&#xff1a;node_exporter用于监控*nux系统&#xff0c;使用go编写的收集器prometheus服务器&#xff1a;192.168.199.222监控服务器 192.168.199.221在192.168.199.221下载node_exporterwget https://github.com/prometheus/node_exporter/releases/download/v*/node_exp…

k8s 离线安装_阿里开源 k8s 事件通知服务

背景在 Kubernetes 开源生态中&#xff0c;资源监控有 metrics-server、Prometheus等&#xff0c;但这些监控并不能实时推送 Kubernetes 事件&#xff0c;监控准确性也不足。当 kubernetes 集群中发生 Pod因为 OOM 、拉取不到镜像、健康检查不通过等错误导致重启&#xff0c;集…

kali linux解密栅栏密码,最详细bugku加密小白解法---持续更新!

bugku加密&#xff01;安排本文持续更新1 摩斯密码2 栅栏密码3 Ook密码4 brain密码5 easycrypto密码6 base647 散乱的密文8 凯撒密码9 一段base6410 &#xff01;&#xff1f;11 []-12 奇怪的密码--凯撒变式13 托马斯杰斐逊--转轮加密14 伪加密15 告诉你个秘密16 这不是MD517 贝…

python元组类型_Python数据类型之元组

导语&#xff1a;元组介绍访问元组修改元组删除元组元组运算符元组内置函数 元组介绍 与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号&#xff0c;列表使用方括号。 元组的创建&#xff0c;只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。 实…

linux命令 重定向%3e,linux输出信息调试信息重定向

在运行linux的时候有所有的调试信息可以分为三个部分1、bootloader输出信息U-Boot 1.3.2(Nov 19 2016 - 22:02:08)DRAM: 64 MBFlash: 512 kBNAND: 64 MiBIn: serialOut: serialErr: serialHit any key to stop autoboot: 0[yqliu2410 #] tftpFound DM9000 ID:90000a46 at addre…

360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”

0x00 寻找突破口打开首页,emm就一个登录页面,没了随便写点东西提交看看天生手欠的我一不小心就多输了一个单引号WDNMD,除了数字和字母其他都不行?这叫我怎么测?刚刚要放弃,就在这时,首页的一个二维码吸引了我正是安卓端的软件,眼前一亮,仿佛找到了打开新世界的大门开开心心地…

linux内核中测量时间的方法,Linux内核中获取时间函数do_gettimeofday

内核代码能一直获取一个当前时间的表示, 通过查看 jifies 的值. 常常地, 这个值只代表从最后一次启动以来的时间, 这个事实对驱动来说无关, 因为它的生命周期受限于系统的 uptime. 如所示, 驱动可以使用 jiffies 的当前值来计算事件之间的时间间隔(例如, 在输入驱动中从单击中区…

python 函数递归_Python零基础之三元表达式、函数递归、匿名函数教程!超级详细!...

目录一、三元表达式二、函数递归 递归调用的定义递归分为两个阶段&#xff1a;递归&#xff0c;回溯三、匿名函数 什么是匿名函数&#xff1f;有名字的函数与匿名函数的对比lambda匿名函数的应用四、内置函数 #注意&#xff1a;内置函数id()可以返回一个对象的身份&#xff0c;…

linux 内核空间占用cpu百分比过高,linux下分析java程序占用CPU、内存过高

一、CPU过高分析1)使用TOP命令查看CPU、内存使用状态可以发现CPU占用主要分为两部分&#xff0c;一部分为系统内核空间占用CPU百分比&#xff0c;一部分为用户空间占用CPU百分比。其中CPU状态中标示id的为空闲CPU百分比。当空闲CPU百分比越低&#xff0c;说明CPU占用率越高。2)…

python输入半径计算球的体积_如何用Python中的Monte-Carlo方法计算10维球体积?

你的日常生活中有很多问题. 您收到的错误消息来自您的行 r 2.0*np.random.uniform(0,1,iter) - 1.0 函数调用np.random.uniform(0,1,iter)不会创建单个随机数.相反,像大多数numpy函数一样,它返回一个数组 – 在这种情况下,是一个你声明的长度的向量(在本例中是iter).所以r也是…

linux怎样以root用户运行,如何在Linux机器中以root用户身份运行Elastic...

我试图在我的Linux计算机上运行Elasticsearch 5.2.1,我是它的root用户.当我尝试执行Elasticsearch时.我收到以下错误,[2017-03-15T03:26:18,976][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [elk_data1] uncaught exception in thread [main]org.elasticsearch.boot…

python语言的两种注释方法_python编程时添加中文注释的方法

python编程时添加中文注释的方法 发布时间&#xff1a;2020-08-24 17:09:52 来源&#xff1a;亿速云 阅读&#xff1a;77 作者&#xff1a;小新 这篇文章主要介绍python编程时添加中文注释的方法&#xff0c;文中介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴…

springboot 获取application参数_LOOK ! SpringBoot的外部化配置最全解析

本篇要点介绍各种配置方式的优先级。介绍各种外部化配置方式。介绍yaml的格式及原理。介绍如何绑定并测试类型安全的属性配置。介绍ConfigurationProperties与Value的区别。一、SpringBoot官方文档对于外部化配置的介绍及作用顺序SpringBoot支持多种外部化配置&#xff0c;以便…

spark入门_入门必读 | Spark 论文导读

Resilient Distributed Datasets: A fault-tolerant abstraction for in-Memory cluster computing&#xff0c; 是讲述 Spark RDD 的基础论文&#xff0c;通读论文能给我们带来全景的 Spark 知识面摘要&#xff1a;RDD,全称Resilient Distributed Dataset,可伸缩性数据集。使用…

Qt在linux下无法输入中文,Ubuntu使用集成开发环境QT无法输入中文的解决方法

QT Creator是轻量级集成开发环境&#xff0c;在Ubuntu系统操作中&#xff0c;使用QT时无法输入中文&#xff0c;遇到这种情况要如何处理呢&#xff1f;下面小编就给大家介绍下Ubuntu如何解决QT无法输入中文问题。1 安装搜狗输入法&#xff0c;(如果你想用ubuntu自带的输入法也没…

altium pcb 信号高亮_在PCB设计中高效的放置元件技巧

在印刷电路板设计中&#xff0c;设置电路板轮廓后&#xff0c;将零件(占地面积)调用到工作区。然后将零件重新放置到正确的位置&#xff0c;并在完成后进行接线。组件放置是这项工作的第一步&#xff0c;对于之后的平滑布线工作是非常重要的工作。如果在接线工作期间模块不足&a…

linux升级ssh到6.6版本,CentOS6.5 openssh升级到openssh-7.6版本

CentOS6.5 openssh升级到openssh-7.6版本2018-8-3 foooy升级前保证故障后能现场处理&#xff0c;或者远程卡处理&#xff0c;否则不要这样直接升级yum install -y gcc openssl-devel pam-devel rpm-buildwget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.6…

python中csv文件通过什么表示字符_python_写入csv文件时候无法进行原样写入(写入字符串中出现逗号,时候,csv文件自动分成两个单元格)...

问题描述&#xff1a; 写入csv文件时候无法进行原样写入(写入字符串中出现逗号","时候&#xff0c;csv文件自动分成两个单元格) with open("test.csv","w") as f: f.write("闲暇时&#xff0c;我会被一段&#xff0c;配乐诗朗诵,所感动,悲伤…