第二章,python--numpy常用函数详解
注意:下面函数的含义中尺寸大小指的是数组的属性shape的值
内容概括
- Numpy简介
- Numpy库函数讲解
- Numpy数据类型
- Numpy的创建
- numpy创建随机数组
- Numpy数组的属性函数
- Numpy更改数组形状
- Numpy统计函数
- Numpy算数操作
- Numpy比较操作
- Numpy的指数,对数,三角函数
- Numpy取整,四舍五入
- Numpy矩阵运算
- Numpy数组合并
- Numpy数组分割
- Numpy其他函数
- 结尾
Numpy简介
NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。
Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 这个开源项目有很多贡献者。
学Python的同学应该都知道Numpy库,也知道这个库在机器学习领域是必不可少的库,这里我为大家整理了Numpy库的一些常用的函数,方便大家在使用的时候查找。
Numpy库函数讲解
Numpy数据类型
类型 | 含义 |
---|---|
np.int8 和 np.uint8 | 整数(-128到127)和 无符号整数(0到255) |
np.int16 和 np.uint16 | 整数(-32768至32767)和 无符号整数(0到65535) |
np.int32 和 np.uint32 | 整数(-2147483648至2147483647)和 无符号整数(0到4294967295) |
np.int64 和 np.uint64 | 整数(-9223372036854775808至9223372036854775807)和 无符号整数(0到18446744073709551615) |
np.float16 | 半精度浮点数(十进制下小数点后精确到后四位) |
np.float32 | 单精度浮点数(十进制下小数点后精确到后8位) |
np.float64 | 双精度浮点数 |
np.complex64 | 复数,由两个32位浮点数(实数和虚数组成)表示 |
np.complex128 | 复数,由两个64位浮点数(实数和虚数组成)表示 |
np.bool_ | 布尔值,由True和False组成 |
Numpy的创建
函数 | 含义 |
---|---|
np.array(object, dtype=None,copy=True) | odject = []或(),创建一维组。object = [[],[],…] 或((),()…),创建二维数组。dtype可自选数据类型,不写系统会自动判断填写数据类型。copy默认为True |
np.asarray(object,dtype=None) | 当np.array(copy = False)两函数一样 |
讲解一下np.array中参数copy的用法,文字描述十分麻烦,还是代码演示吧
import numpy as np
a = [-1,2,2]
a = np.array(a)
c = np.array(a,copy = False)
a[0] = 100
print('当copy=False')
print('c数组')
print(c)
print('a数组')
print(a)
#代码运行结果:
当copy=False
c数组
[100 2 2]
a数组
[100 2 2]
当copy=True
c数组
[-1 2 2]
a数组
[100 2 2]
通过代码结果可以看出copy为True和False的区别,也就明白了np.array与np.asarray的区别
函数 | 含义 |
---|---|
创建等差数列 np.arange([start,]stop, [step],[dtype]) | 创建一个从start到stop-1,步长为step的数组,其中start默认为0,step默认为1,stop是必须填写的参数 |
创建等差数列 np.linspace(start,stop,[num],[endpoint],[dtype ]) | 创建一个从start到stop的等差数列,num为此等差数列的个数,默认50,endpoint默认为True代表数列的最后一项包含stop,反之不包含 |
特殊值数组np.zeros(shape, [dtype],) | shape为一个数值,创建一个一维的值为0的数组,shape为元组或列表,创建一个与shape尺寸大小的值为0的数组。 |
特殊值数组np.ones(shape,[dtype]) | shape为一个数值,创建一个一维的值为1的数组,shape为元组或列表,创建一个与shape尺寸大小的值为1的数组 |
特殊值数组np.eye(n,[m],[k],[dtype]) | n为数组的行数。m是输出的列数,默认为n。k默认为0表示的是主对角线为1,其余为0,负数越小表示为1的对角线往主对角线的下方走,正数越大表示为1的对角线往主对角线的上方走。 |
numpy创建随机数组
函数 | 含义 |
---|---|
np.random.seed(k) | 如果使用相同的k 值,则每次生成的随机数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。 |
np.random.random([size]) | 在[0,1)区间随机生成数组,szie不填写时只生成一个数据的数组,size可接收列表或元组,随机生成和size尺寸大小相同的数组 |
np.random.rand(x,x1,x2…) | 在[0,1)区间随机生成符合(x,x1,x2…)尺寸大小形状的数组 |
np.random.randn(x,x1,x2…) | 生成符合标准正态分布的(x,x1,x2…)尺寸大小形状的数组 |
np.random.randint(low, [high], [size], [dtype]) | 在[low,high)区间内生成符合size尺寸大小相同的数组,当参数high不填写时生成区间为[0,low)的数组。当shape不填写时只生成一个数据的数组 |
np.random.choice(a,[size],[replace=True],[p]) | a为数字,则从[0,a)中随机抽取数字,a为列表,元组和数组(必须是一维的)中随机抽取数字。size不填写时,只随机产生一个数据,siz为数字,随机产生size个数据组成一维数组,size为列表或元组,则生成与size相同大小尺寸的数组。replace默认为True,表示可以取相同数字,False表示不可以取相同数字。p与a相对应,表示取数组a中每个元素的概率,默认为选取每个元素的概率相同。 |
numpy.random.normal(loc=0.0, scale=1.0, size=None) | loc:浮点型数据,分布的均值(中心)。scale: 浮点型数据,分布的标准差(宽度)。size:整数或者整数组成的元组,如果给定size,生成与size尺寸大小相同的数组。如果size为None(默认值),那么就会返回一个值。 |
Numpy数组的属性函数
函数 | 含义 |
---|---|
ndim | 返回int。表示数组的维度 |
shape | 返回tuple。表示数组的尺寸,对于n行m列的矩阵,形状为(n,m) |
size | 返回int。表示数组的元素总数,等于数组形状的乘积 |
dtype | 返回type。描述数组中元素的类型 |
itemsize | 返回int。表示数组的每个元素的大小(以字节为单位) |
nbytes | 返回int。表示数组占用的空间 |
Numpy更改数组形状
函数 | 含义 |
---|---|
np.reshape(a, newshape,) 或a.reshape(shape) | 两函数效果相同,np.reshape的参数newshape只能接收列表和元组,但a.reshape不但可以接收列表和元组,参数的每个元素作为单独的参数传入.变换后的数组的元素个数与原来的元素个数相同,否则报错 |
np.resize(a,new_shape)或a.reszie() | new_shape只能接收列表和元组,a.resize可单个接收,也可接收列表和元组。变换后的数组的元素个数可以与原数组的元素个数不同,np.shape可以进行重复填充,a.resize进行0填充。 |
np.ravel(a)或a.ravel() | 将数组a变为一维数组 |
a.flatten() | 将数组a变为一维数组 |
np.squeeze(a) | 移除元素个数为一的维度 |
np.transpose(a,axes)或a.transpose() | a 为输入的数组。axes为元组 或 列表, 如果指定,它必须是包含[0,1,…,N-1]的排列的元组或列表,其中N是a的轴数,返回数组的第i个轴将与输入的编号为axes [i]的轴相对应。 axes默认为range(a.ndim)[::-1],这将反转轴的顺序。a.transpose功能与np.transpose一样,a.transpose可以接收多个数,元组或列表(这个难以理解,建议使用a.shape来查看使用该函数前后的变化) |
np.swapaxes(a, axis1, axis2)或a.swapaxes() | 交换axis1和axis2的所代表的两个轴,axis1和axis2都为整数。a.swapaxes也只能接收两个整数。切记这两个函数不能输入两个整数的列表或元组 |
Numpy统计函数
函数 | 含义 |
---|---|
np.sum(a, axis=None)或a.sum(axis = None) | 根据给定轴axis计算数组a相关元素之和,axis整数或元组 |
np.mean(a, axis=None)或a.mean(axis = None) | 根据给定轴axis计算数组a相关元素的期望,axis整数或元组 |
np.average(a,axis=None,weights=None) | 根据给定轴axis计算数组a相关元素的加权平均值 |
np.std(a, axis=None)或a.std(axis = None) | 根据给定轴axis计算数组a相关元素的标准差 |
np.var(a, axis=None)或a.var(axis = None) | 根据给定轴axis计算数组a相关元素的方差 |
np.min(a,axis=None)或a.min(axis=None) | 计算数组a中元素的最大值 |
np.max(a,axis=None)或a.max(axis=None) | 计算数组a中元素的最大值 |
np.argmin(a,axis=None)或 a.argmin(axis = None) | 计算数组a中元素最小值降为一维后的下标 |
np.argmax(a,axis=None)或 a.argmax(axis = None) | 计算数组a中元素最大值降为一维后的下标 |
np.ptp(a,axis=None)或a.ptp(axis = None) | 计算数组a中元素最大值与最小值的差 |
np.median(a,axis=None)或 a.median(axis = None) | 计算数组a中元素的中位数(中值) |
Numpy算数操作
函数 | 含义 |
---|---|
x1+x2或np.add(x1,x2) | x1与x2相加,x1与x2可以为数值也可以都为数组,数组的时候其shape的尺寸大小要相同 |
x1-x2或np.subtract(x1,x2) | x1减x2,x1与x2可以为数值也可以都为数组,数组的时候其shape的尺寸大小要相同 |
-x或np.negative(x) | 取x的负数,x可以为数值也可以为数组 |
x1*x2或 np.multiply(x1,x2) | x1x与2相乘,x1与x2可以为数值也可以都为数组,数组的时候其shape的尺寸大小要相同 |
x1/x2或np.divide(x1,x2) | x1除以x2,x1与x2可以为数值也可以都为数组,数组的时候其shape的尺寸大小要相同,x2为零的时候,值为inf(无限大) |
x1//x2或 np.floor_divide(x1,x2) | x1整除x2,x1与x2可以为数值也可以都为数组,数组的时候其shape的尺寸大小要相同 |
x1**x2或 np.power(x1,x2) | x1的x2次方,x1与x2可以为数值也可以都为数组,数组的时候其shape的尺寸大小要相同 |
x1%x1或 np.mod(x1,x2) | x1除以x2的余数,x1与x2可以为数值也可以都为数组,数组的时候其shape的尺寸大小要相同 |
Numpy比较操作
函数 | 含义 |
---|---|
x1==x2或np.equal(x1,x2) | 返回布尔数组 |
x1!=x2或no.not_equal(x1,x2) | 返回布尔数组 |
x1<x2或np.less(x1,x2) | 返回布尔数组 |
x1<=x2或np.less_equal(x1,x2) | 返回布尔数组 |
x1>x2或np.greater(x1,x2) | 返回布尔数组 |
x1>=x2或 np.greater_equal(x1,x2) | 返回布尔数组 |
Numpy的指数,对数,三角函数
函数 | 含义 |
---|---|
np.exp | 计算指数(e^x) |
np.log,np.log10,np.log2,np.log1p | 求以e为底,以10为低,以2为低,以(1+x)为底的对数 |
np.sign | 将数组中的值标签化,大于0的变成1,等于0的变成0,小于0的变成-1 |
np.cos,np.sin,np.tan | 三角函数 |
np.arccos,np.arcsin,np.arctan | 反三角函数 |
Numpy取整,四舍五入
函数 | 含义 |
---|---|
np.ceil | 朝着无穷大的方向取整,比如5.1会变成6,-6.3会变成-6 |
np.floor | 朝着负无穷大方向取证,比如5.1会变成5,-6.3会变成-7 |
np.rint(a) | 四舍五入取整 |
np.round(a,decimals=0) | 返回四舍五入后的值,decimals为小数点后的位数 |
np.modf | 将整数和小数分隔开来形成两个数组 |
Numpy矩阵运算
函数 | 含义 |
---|---|
np.dot(a,b) | a与b进行数组的行列式相乘 |
np.linalg.inv(a) | 求矩阵a的逆 |
np.linalg.det(a) | 求a的行列式 |
np.linalg.eig(a) | 求a的特征值和特征向量 |
np.linalg.sval(a) | 求a的奇异值分解 |
np.linalg.norm(a, ord=2, axis=None,) | ord=1:求一范数,ord=2:求二范数,ord=np.inf:无穷范数, |
Numpy数组合并
函数 | 含义 |
---|---|
np.append(arr, values, axis=None) | arr:需要被合并values的数组。values:合并到数组arr中的数组。axis:可选参数,如果axis没有给出,合并后返回值为一维数组。axis被填写,按照axis指定的维度合并(axis填写时arr和values需有相同的shape的尺寸大小) |
np.concatenate(arrays, axis=None) | array多个数组组成的列表或元组。axis填写后将按照axis指定的维度合并(array中的数组可以是不同的shape的尺寸大小) |
np.stack(arrays, axis=0) | array多个数组组成的列表或元组。axis填写后将按照axis指定的维度合并(array中的数组需为相同的shape的尺寸大小) |
np.hstack(tup) | 横向合并,tup多个数组组成的列表或元组。建议使用二维数组,多维数组当shape的尺寸大小不同时有时可以合并,有时不可以。 |
np.vstack(tup) | 竖向合并,tup多个数组组成的列表或元组。 |
Numpy数组分割
函数 | 含义 |
---|---|
np.split(ary, indices_or_sections, axis=0) | ary:要切分的数组。indices_or_sections:如果是一个整数,表示将arry切割为改整数份,如果是一个列表或元组(第一个值不要为0),列表值进行切分。axis:沿着哪个维度进行切向,默认为0,横向切分,1表示竖向切分。 |
np.hsplit(ary, indices_or_sections) | 竖向切分。ary:要切分的数组。indices_or_sections:如果是一个整数,表示将arry切割为改整数份,如果是一个列表或元组(第一个值不要为0),列表值进行切分。 |
np.vsplit(ary, indices_or_sections) | 横向切分。ary:要切分的数组。indices_or_sections:如果是一个整数,表示将arry切割为改整数份,如果是一个列表或元组(第一个值不要为0),列表值进行切分。 |
Numpy其他函数
函数 | 含义 |
---|---|
np.take(a,indices,axis = None)/a.take() | a:要提取的数组。indices;要提取的值的索引的列表。axis=0:抽取相应索引行的数据。axis=1:抽取相应索引列的数据。axis=None:将数组转化为一维数据再进行索引相对应的数据 |
np.argmax(array, axis=None) /array.argmax(axis=None) | array:代表输入数组;axis=0:对array取每一列的最大值的索引,axis=1:对array取每一行的最大值的索引。axis=None:j将array转为一维数据再进行取最大值的索引(axis为1和0所对应的列和行没有写错,它是和别人不同) |
结尾
Numpy函数太多了,这里就写了一些比较常用的函数,总结这些函数真是太费时间了,函数的用法我是自己上机实验过,按照自己的理解整理的,内容可能不全,讲解的不够详细。如果你有什么疑惑或不懂的地方,建议亲自实践。以后遇见了更多的函数我会继续补充的。希望大家多多支持。
第二章,python--numpy常用函数详解相关推荐
- blankcount函数python,Python pandas常用函数详解
本文研究的主要是pandas常用函数,具体介绍如下. 1 import语句 2 文件读取 df = pd.read_csv(path='file.csv') 参数:header=None 用默认列名, ...
- python字符串常用函数-Python字符串常用函数详解
字符串相关操作大致总结以下9个部分,包括常用字符集合.大小写转换.判断字符元素类型.字符填充.字符串搜索.字符串替换.字符串添加.字符串修剪以及字符串分割. "字符串相关函数" & ...
- Python字符串常用函数详解
str.index(sub, start=None, end=None) 作用:查看sub是否在字符串中,在的话返回索引,且只返回第一次匹配到的索引:若找不到则报错:可以指定统计的范围,[start, ...
- python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...
Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...
- QT:常用函数详解--常用操作记录(个人笔记)
QT:常用函数详解(个人笔记) PS:一下内容个人笔记,要求自己看懂,随笔,阅读体验会很差很差! Qt setContentsMargins()函数 函数原型:void QLayout::setCon ...
- chatgpt赋能python:Python取ln函数详解:用法及常见问题解答
Python取ln函数详解:用法及常见问题解答 Python取ln函数是一种非常常用的数学函数,它可以帮助开发者在计算中处理数据的自然指数对数.本篇文章将会介绍Python中取ln函数的基础知识,让您 ...
- MySql截取字符串的几个常用函数详解
MySql截取字符串的几个常用函数详解 MySQL 截取字符的几个常用函数:left(), right(), substring(), substring_index(),mid(), substr( ...
- Python内置函数详解——总结篇
引 言 国庆期间下定决心打算学习Python,于是下载安装了开发环境.然后问题就来了,怎么开始呢?纠结一番,还是从官方帮助文档开始吧.可是全是英文啊,英语渣怎么破?那就边翻译边看边实践着做吧(顺便 ...
- numpy随机生成01矩阵_Python数据分析Numpy库常用函数详解,提到循环就该想到的库...
Python进行数据分析的核心库肯定是Pandas,该库差不多可以解决结构化数据的绝大部分处理需求.在<Python数据分析常用函数及参数详解,可以留着以备不时之需 >一文中也已经对该库的 ...
最新文章
- C#程序 权限不够的解决方案
- Redis集群方案之Twemproxy+HAProxy+Keepalived+Sentinel+主从复制(待实践)
- 响应式设计的真正挑战:RSS
- Android ---------高德卫星地图绘制多个点和点的点击事件自定义弹窗
- GIS开源库shapeLib的使用方法
- CVPR 2021 论文/代码分类汇总!持续更新中!
- pandas 在某个列表中的值 筛选列_Pandas学习笔记(二)
- vue.js高德地图实现热点图
- mysql 体系架构设计_MySQL数据库的体系架构(转载)
- 人脸方向学习(二):人脸质量评价-质量判断总结
- lua能在stm32arm上运行吗_IOS App能在Mac运行!苹果这黑科技能撼动微软吗?
- 2345 网址导航劫持 解决办法
- C语言万年历设计制作
- 当年轻人在说“夸克真香”,他们在说什么?
- 如何在 MAC 电脑上查找 IP 地址
- 阿里云DTS订阅实现实时运营服务的方案及注意事项
- 时序数据库分析 - TimescaleDB时序数据库介绍
- z stat.php 源码,phpstat任意读取网站文件
- SAP_增强案例_MB51(物料凭证清单)新增客户化字段
- 双层for循环执行先后