python

您所在的位置:网站首页 pythonnumpy矩阵乘法 python

python

2023-03-14 22:14| 来源: 网络整理| 查看: 265

注意:下面函数的含义中尺寸大小指的是数组的属性shape的值

内容概括 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默认为Truenp.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.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的变成-1np.cos,np.sin,np.tan三角函数np.arccos,np.arcsin,np.arctan反三角函数 Numpy取整,四舍五入 函数含义np.ceil朝着无穷大的方向取整,比如5.1会变成6,-6.3会变成-6np.floor朝着负无穷大方向取证,比如5.1会变成5,-6.3会变成-7np.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函数太多了,这里就写了一些比较常用的函数,总结这些函数真是太费时间了,函数的用法我是自己上机实验过,按照自己的理解整理的,内容可能不全,讲解的不够详细。如果你有什么疑惑或不懂的地方,建议亲自实践。以后遇见了更多的函数我会继续补充的。希望大家多多支持。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3