numpy创建单位矩阵和对角矩阵的实例
在学习linearregression时经常处理的数据一般多是矩阵或者n维向量的数据形式,所以必须对矩阵有一定的认识基础。
numpy中创建单位矩阵借助identity()函数。更为准确的说,此函数创建的是一个n*n的单位数组,返回值的dtype=array数据形式。其中接受的参数有两个,第一个是n值大小,第二个为数据类型,一般为浮点型。单位数组的概念与单位矩阵相同,主对角线元素为1,其他元素均为零,等同于单位1。而要想得到单位矩阵,只要用mat()函数将数组转换为矩阵即可。
>>>importnumpyasnp >>>help(np.identity) Helponfunctionidentityinmodulenumpy: identity(n,dtype=None) Returntheidentityarray. Theidentityarrayisasquarearraywithoneson themaindiagonal. Parameters ---------- n:int Numberofrows(andcolumns)in`n`x`n`output. dtype:data-type,optional Data-typeoftheoutput.Defaultsto``float``. Returns ------- out:ndarray `n`x`n`arraywithitsmaindiagonalsettoone, andallotherelements0. Examples -------- >>>np.identity(3) array([[1.,0.,0.], [0.,1.,0.], [0.,0.,1.]]) >>>np.identity(5) array([[1.,0.,0.,0.,0.], [0.,1.,0.,0.,0.], [0.,0.,1.,0.,0.], [0.,0.,0.,1.,0.], [0.,0.,0.,0.,1.]]) >>>A=np.mat(np.identity(5)) >>>A matrix([[1.,0.,0.,0.,0.], [0.,1.,0.,0.,0.], [0.,0.,1.,0.,0.], [0.,0.,0.,1.,0.], [0.,0.,0.,0.,1.]])
矩阵的运算中还经常使用对角阵,numpy中的对角阵用eye()函数来创建。eye()函数接受五个参数,返回一个单位数组。第一个和第二个参数N,M分别对应表示创建数组的行数和列数,当然当你只设定一个值时,就默认了N=M。第三个参数k是对角线指数,跟diagonal中的offset参数是一样的,默认值为0,就是主对角线的方向,上三角方向为正,下三角方向为负,可以取-n到+m的范围。第四个参数是dtype,用于指定元素的数据类型,第五个参数是order,用于排序,有‘C'和‘F'两个参数,默认值为‘C',为行排序,‘F'为列排序。返回值为一个单位数组。
>>>help(np.eye) Helponfunctioneyeinmodulenumpy: eye(N,M=None,k=0,dtype=,order='C') Returna2-Darraywithonesonthediagonalandzeroselsewhere. Parameters ---------- N:int Numberofrowsintheoutput. M:int,optional Numberofcolumnsintheoutput.IfNone,defaultsto`N`. k:int,optional Indexofthediagonal:0(thedefault)referstothemaindiagonal, apositivevaluereferstoanupperdiagonal,andanegativevalue toalowerdiagonal. dtype:data-type,optional Data-typeofthereturnedarray. order:{'C','F'},optional Whethertheoutputshouldbestoredinrow-major(C-style)or column-major(Fortran-style)orderinmemory. ..versionadded::1.14.0 Returns ------- I:ndarrayofshape(N,M) Anarraywhereallelementsareequaltozero,exceptforthe`k`-th diagonal,whosevaluesareequaltoone. SeeAlso -------- identity:(almost)equivalentfunction diag:diagonal2-Darrayfroma1-Darrayspecifiedbytheuser. Examples -------- >>>np.eye(2,dtype=int) array([[1,0], [0,1]]) >>>np.eye(3,k=1) array([[0.,1.,0.], [0.,0.,1.], [0.,0.,0.]])
numpy中的diagonal()方法可以对n*n的数组和方阵取对角线上的元素,diagonal()接受三个参数。第一个offset参数是主对角线的方向,默认值为0是主对角线,上三角方向为正,下三角方向为负,可以取-n到+n的范围。第二个参数和第三个参数是在数组大于2维时指定一个2维数组时使用,默认值axis1=0,axis2=1。
>>>help(A.diagonal) Helponbuilt-infunctiondiagonal: diagonal(...)methodofnumpy.matrixinstance a.diagonal(offset=0,axis1=0,axis2=1) Returnspecifieddiagonals.InNumPy1.9thereturnedarrayisa read-onlyviewinsteadofacopyasinpreviousNumPyversions.In afutureversiontheread-onlyrestrictionwillberemoved. Referto:func:`numpy.diagonal`forfulldocumentation. SeeAlso -------- numpy.diagonal:equivalentfunction >>>help(np.diagonal) Helponfunctiondiagonalinmodulenumpy: diagonal(a,offset=0,axis1=0,axis2=1) Returnspecifieddiagonals. If`a`is2-D,returnsthediagonalof`a`withthegivenoffset, i.e.,thecollectionofelementsoftheform``a[i,i+offset]``.If `a`hasmorethantwodimensions,thentheaxesspecifiedby`axis1` and`axis2`areusedtodeterminethe2-Dsub-arraywhosediagonalis returned.Theshapeoftheresultingarraycanbedeterminedby removing`axis1`and`axis2`andappendinganindextotherightequal tothesizeoftheresultingdiagonals. InversionsofNumPypriorto1.7,thisfunctionalwaysreturnedanew, independentarraycontainingacopyofthevaluesinthediagonal. InNumPy1.7and1.8,itcontinuestoreturnacopyofthediagonal, butdependingonthisfactisdeprecated.Writingtotheresulting arraycontinuestoworkasitusedto,butaFutureWarningisissued. StartinginNumPy1.9itreturnsaread-onlyviewontheoriginalarray. Attemptingtowritetotheresultingarraywillproduceanerror. Insomefuturerelease,itwillreturnaread/writeviewandwritingto thereturnedarraywillalteryouroriginalarray.Thereturnedarray willhavethesametypeastheinputarray. Ifyoudon'twritetothearrayreturnedbythisfunction,thenyoucan justignorealloftheabove. Ifyoudependonthecurrentbehavior,thenwesuggestcopyingthe returnedarrayexplicitly,i.e.,use``np.diagonal(a).copy()``instead ofjust``np.diagonal(a)``.Thiswillworkwithbothpastandfuture versionsofNumPy. Parameters ---------- a:array_like Arrayfromwhichthediagonalsaretaken. offset:int,optional Offsetofthediagonalfromthemaindiagonal.Canbepositiveor negative.Defaultstomaindiagonal(0). axis1:int,optional Axistobeusedasthefirstaxisofthe2-Dsub-arraysfromwhich thediagonalsshouldbetaken.Defaultstofirstaxis(0). axis2:int,optional Axistobeusedasthesecondaxisofthe2-Dsub-arraysfrom whichthediagonalsshouldbetaken.Defaultstosecondaxis(1). Returns ------- array_of_diagonals:ndarray If`a`is2-D,thena1-Darraycontainingthediagonalandofthe sametypeas`a`isreturnedunless`a`isa`matrix`,inwhichcase a1-Darrayratherthana(2-D)`matrix`isreturnedinorderto maintainbackwardcompatibility. If``a.ndim>2``,thenthedimensionsspecifiedby`axis1`and`axis2` areremoved,andanewaxisinsertedattheendcorrespondingtothe diagonal. Raises ------ ValueError Ifthedimensionof`a`islessthan2. SeeAlso -------- diag:MATLABwork-a-likefor1-Dand2-Darrays. diagflat:Creatediagonalarrays. trace:Sumalongdiagonals. Examples -------- >>>a=np.arange(4).reshape(2,2) >>>a array([[0,1], [2,3]]) >>>a.diagonal() array([0,3]) >>>a.diagonal(1) array([1]) A3-Dexample: >>>a=np.arange(8).reshape(2,2,2);a array([[[0,1], [2,3]], [[4,5], [6,7]]]) >>>a.diagonal(0,#Maindiagonalsoftwoarrayscreatedbyskipping ...0,#acrosstheouter(left)-mostaxislastand ...1)#the"middle"(row)axisfirst. array([[0,6], [1,7]]) Thesub-arrayswhosemaindiagonalswejustobtained;notethateach correspondstofixingtheright-most(column)axis,andthatthe diagonalsare"packed"inrows. >>>a[:,:,0]#maindiagonalis[06] array([[0,2], [4,6]]) >>>a[:,:,1]#maindiagonalis[17] array([[1,3], [5,7]]) >>>A=np.random.randint(low=5,high=30,size=(5,5)) >>>A array([[25,15,26,6,22], [27,14,22,16,21], [22,17,10,14,25], [11,9,27,20,6], [24,19,19,26,14]]) >>>A.diagonal() array([25,14,10,20,14]) >>>A.diagonal(offset=1) array([15,22,14,6]) >>>A.diagonal(offset=-2) array([22,9,19])
以上这篇numpy创建单位矩阵和对角矩阵的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。