python |
您所在的位置:网站首页 › pythonnumpy矩阵乘法 › python |
注意:下面函数的含义中尺寸大小指的是数组的属性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 |