12 jui 2018 · ndarray round(decimals=0, out=None) Return a with each element rounded to the given number of decimals Refer to numpy around for full
7 nov 2019 · Floating point numbers are represented in computer hardware as binary fractions plus • Many decimal fractions cannot be represented exactly as
Le module numpy est la boîte à outils indispensable pour faire du calcul floor(a) , ceil(a) , trunc(a) (troncature), round_(a,n) (arrondi à n décimales)
23 nov 2020 · Numpy is a library for the Python, adding support for large, print (around(in_array, decimals = 3)) >> [ 0 334 1 555 0 734]
19 juil 2019 · numpy split() splits an array along the specified axis We can either specify sequence of should be rounded to two places of decimals
14 jan 2022 · does what the earlier examples do, at near-C speeds, but with the code simplicity we expect from something based on Python
7 déc 2006 · In order to better understand the people surrounding NumPy and (its library- Round the elements of the array to the nearest decimal
12 fév 2008 · Arrays are the central datatype introduced in the NumPy and SciPy packages numpy round(a, decimals=0): round elements of matrix a to
Entier, décimal, complexe, booléen, rien disponible ici : https://perso limsi fr/pointal/python:memento round(x,n) arrondi du float x à n
NumPy provides a fast built-in object (ndarray) which array along each dimension a round(decimals=0) – Round to the specified number of digits
Lesnouve auxprogrammesdesCPGEscie ntifiques(rentrée2013)comporte ntunensei gnementd' informatiquepourtous,
etprév oientnotammentl'utilisationdul angagePython.Ced ocumentfaitsuiteà"Unepe titeréférenc ePython»,dontl ave rsi onlaplusr écenteestsurmathprepa.fr
Iles tconsacré àuneprésentationassezco mpl ète(mais quinesauraitêtreexhaustive)dumodule numpy.
Cedo cumentestmisàdispositio nselonles termesdel ali cenceCreativeCommons: http://creativecommons.org/licenses/by-nc-sa/3.0/deed.frJ'aivou lul'écrirepourmettre mespropresidé esenplaceaus ujetde numpy.Maiscommentavoirunevued'ensemblesans
entrerdanslesdétails? Etcomment rendrecompteen unesoixantainedepagesd'uneenti tédon tlemanuelder éférence
enfait plusdemill e?J'aifait demonmieux, avecun planqu ijel'espère "tientlaroute»,malgréun coté"catalogue »unpe uinévitable. Après
peut-êtreunelecturelinéa iredecedo cument,onpréfèrerasa nsdoutedesaccèschoisisv ialata bledes matières.J'aifait
ensort ed'accompagnerlesfonctions d'exemplessuggesti fs.Danscedocumen télectronique,l esnomsdesfonctionssont
eux-mêmesdesliens ver sladocumentation o ffi cielle(enanglais).Pourtoutes uggestion,onpeu tmecontacteràmonadresseacadémiqu e(ci-d essous,etc'e stlab onneorthographe).
J'apprécieraitoutretour,mêmesic'es tpourme signalerdesoub lis,dese rreurs,de sfautesd'orthographe!
Lesmessage samicauxfonttoujoursplaisir,b iensûr.Pourmodéli serlesvecteurs,matrices,et plusgénér alementlestableauxàndimensions,numpyfournitletypendarray.
érencesmajeuresavecl eslistes(resp.leslistes delistes)qui pourraie ntellesaussinousse rviràreprésenter
desvect eurs(resp.desmatrices) : -Lestableaux numpysonthomogènes,c'est-à-direconstituésd'élémentsdumêmetype.Ontrouv eradoncdestableau xd'entiers,de stableauxdeflottan ts,destableauxde chaînesdecaractères,etc.
-Latailled es tableauxnumpyestfixée àlacréat ion.O nnepeutdoncaugmen teroudiminuerlatail led'untabl eau
commele feraitpourune liste(àmoins decréeruntout nouveaut ableau,biensûr).-Leformat d'untableau numpyetla tailledes objetsquilecomposentétantfixés, l' empreintedutableau enmémoire
estin variableetl'accèsàsesélémentssefaitentemps const ant.-Lesopérati onssurlestableauxsontoptimiséese nfonctiondu typedes éléments,etsontb eaucoupplus rapidesqu'elles
nele seraientsur deslisteséquivalentes. Traditionnellement,onchargelatotalitédumodulenumpy,maisenlerenommantennp,delamanièresuivante: >>>import numpyas np >>> Lesfonction sdenumpysontalors accessiblesparleurnomquali fié"np.nom_de_la_fonction». Important:danstoutelasuite,onsupposeraquelemodulenumpyaétéimportédecettemanière.Quandonévoque ralaf onction"array»parexemple,onpenseratoujoursàl'utiliseraveclasyntaxe"np.array»
Onne chargerajam aisnumpypar"fromnumpyi mport*»:lenombredefonctionsimportéesesteneffettropimportant,
etav ecluilerisque d'homonymiea veclesdéfini tionsdéjàprésentesaumomentde l'importation. http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 4/58Onutilis eengénérallaf onctionarraypourforme runtableauàpartird elali ste(oulalistedesliste s)d eseséléments.
Dansl'exe mpleci-dessous,onformeune matriceaàcoefficientsentiers,àtroislignesetquatrecolonnes,àpartird'une
listedetroiss ous-listes delon gueurquatre.Remarque:laméthodetolistd'untablea unumpyletrans formeenlaliste(éven tuellement un elistedelistes) deses
éléments.Attention,ce c'estpasunefonctiondumodul enumpy.Onn'écriradoncpasnp.tolist(a)maisa.tolist()
>>>a= np.arange(15).reshape(3,5);a array([[0,1, 2,3,4], [5,6,7 ,8,9], [10,11,12, 13,14]]) >>>b =a.tolist();b #convertitaenunelist ede listes [[0,1,2, 3,4],[5, 6,7, 8,9],[10, 11,12,13, 14]] >>>c= np.array(b)# retourtableau >>>c array([[0,1, 2,3,4], [5,6,7, 8,9], [10,11,12 ,13,14]])Lesfonction sshape,size,etndimpeuventêtreévoquée sàlafoiscomm edesattributsd'untabl eauetcommedes
fonctionsdumodul enumpyprenantuntableauen arg ument.Pourprendrel'exemplede shape,onpeutdoncécrireaussi
bien"a.shape»que"np.shape(a)». 5Iles ttoujours possibledeforcerledatatype duta bleauavecl'optiondtypedela fonction array(àcon ditiondefaire
duupcasting,c'est-à-diredeforcerletypage"verslehaut»,basésurlesinclusionsstrictesZ?R?C). Dansl'exemp lesuivant,onforcelac réationd'untableaudenombre scomp lexes,alorsquela nature descoe ffi cientsdevait conduireàundatatype entier(onauraitpuaussi bienremplacer8par8+0j,parexemple): >>>c= np.array([[8,3,2,4],[5,1,6,0],[9,7,4,1]], dtype=complex);c array([[8.+0.j,3.+0.j, 2.+0.j,4.+0.j], [5.+0.j,1.+0.j,6.+0.j, 0.+0.j], [9.+0.j,7.+0.j,4.+0.j, 1.+0.j]]) >>>c.dtype dtype('complex128')Pourillust rercespossibilitésonrepren dlesdéfini tionsprécédentesdea(dtype=int),b(dtype=float)etc(dtype=complex).
Onretie ndraquelaméthodeastypecréeunecopieduta bleau(doncn'affectepasle contenu delavar iable).
>>>a.astype(fl oat) array([[0.,1., 2.,3.,4.], [5.,6.,7., 8.,9.], [10.,11.,12. ,13., 14.]]) >>>b.astype(int) array([[8,3,2, 4], [5,1,6, 0], [9,7,4, 1]]) >>>c.astype(float) array([[8.,3., 2.,4.], [5.,1.,6., 0.], [9.,7.,4., 1.]]) e ff ectueunecopiedu tableau aeffectueunecopiedu tableau beffectueunecopiedu tableau c enconv ertissantversletypefloatenconverti ssantverslet ypeint enconvertissantversl ety pe floatUntable aunumpyoccupeuneplaceco nstanteen mémoire,égalea uproduitdunombredesesélémen tsparl ataille(fixe)
d'unélémentdu datatype (enprincip e:4octetspourunentie r,8 pour unflottant,16pourunn ombrecomplexe).
Lesélém entsd'untableaunumpyparticuliersontdumêmetype,etona vulestypes suiv ant s:int,floatetcomplex.
Enfai tilyad'autr esty pesp ossibl esetenvoicilaliste: bool:booléen(TrueouFalse),codésurunoctet int:entier,équivalentdeint32oude int64,suivantlesimplémentations int8:entiersignésur1octet(8bits),intervalle?-2 7 ,2 7 -1?=?-128,127? int16:entiersignésur2octets(16bits),intervalle?-2 15 ,2 15 -1?=?-32768,32767? int32:entiersignésur4octects(32bits),intervalle?-2 31Onpe utaussiformerde stableauxdechaîne sdecaractèresdontla longueurn'excè depasunevaleur donnée:
>>>np.array(("12 3",'abcbde',"12XY5"))#vecteurdechaînesde caractèresunicode,pos maxi <6 array(['123','abcbde', '12XY5'], dtype='Lesméthod esrealetimagpermettentdesépareruntableau numpydenom brescomplexesensaparti eréelleetsa
partieimaginaire.On obtientletableauconjuguédeaenév aluanta.conj()ounp.conj(a) Demême ,onformeletableau des modules (resp .desarguments)parabs(a)etangle(a). Voiciparexem pleunemat ricez,deformat2×4,constituéedenombrescomplexes. >>>z =np.array([[1j,1+1j,2-3j,4-1j],[2j,3-1j,2 +2j,1+5j]]);z array([[0.+1.j,1.+1.j, 2.-3.j,4.-1.j], [0.+2.j,3.-1.j,2.+2.j, 1.+5.j]])Dansl'exemple suivant,onmetlapartie réelle(resp.imaginaire)dutable auzdanslet ableaux(resp.y).Onv oitcomme nt
l'expressionx+1j*ypermetdereconst ituerl etableaucomplexeinitial.Lesfonction squiag issentainsitermeàter mesur
lesélémen tsd'untableauserontétudié esdanslech apitre"Fonctionsu niverselles». >>>x =z.real;x array([[0.,1., 2.,4.], [0.,3.,2. ,1.]]) >>>y= z.imag;y array([[1., 1.,-3.,-1.], [2.,-1.,2.,5.]]) >>>x+ y*1j array([[0.+1.j,1.+1.j, 2.-3.j,4.-1.j], [0.+2.j,3.-1.j,2.+2.j ,1.+5.j]]) >>>z.conj() array([[0.-1.j,1.-1.j, 2.+3.j,4.+1.j], [0.-2.j,3.+1.j,2.-2.j, 1.-5.j]]) http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 7/58Lalec tured'élémentsd'untab leaunumpyprocèdeparcoupes("slices»enanglais)suivantun eouéve ntuellementplu sieurs
desdimen sionsdutableau.C'estcemécanism equies tàl'oeuvredansl'accès(en lectureeten écritu re)auxélémentsd'une
liste(oud'un eliste deliste).Voirladocic i:http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html
Unecoup eestunmécanismed esélectiondep ositionsrégu lièrementespacéesdan suninterv alleI=?0,p-1?.
Lasp écificationlaplusgénéraled'unecoup ees tdébut(inclus):fin(exclue):incrémentetdésigne lespositi onsdeI
àpartirdelavaleurdedébut(incluse),parincrémentationssuc cessiv estantqu'onrestedansl'intervalledéfini parles
valeursdedébutetdefin(cettedernièreé tantexclue:trèsimportant). Lespositions acceptéesparl'interp réteurPythonformentenfaitl'in terv alleI ? =?-p,...,-2,-1,0,1,2,...,p-1?etell es sontconvert ies"modulop»enunepositioneffectivedansI=?0,p-1?.L'intérêtdecetteexte nsionsyntaxiqu eestquelesp ositionsnégativessucces sives-1,-2,...,quisontconvertiesenles
positionsp-1,p-2,...(oùpreprésentelalongueurduvecteur v)permettentdelirelesélémentsdevàpartirdelafin.
Pardéf aut,lapositiondedébut (incl use)est0etlapositiondefin (excl ue)estlalongueu rpdeIdoncdev.
Pardéfa utégalement,lavale urd'incrémentationest1.Commeçaparai tunpeu compliquédeprimea bord,o nvaprendr equelquesexemples,d'abords urunv ecteur.
Onch oisiticideformerlev ecteurv,delongueurp=16,telquev[k]=10 kpourkdansI=?0,15?. >>>v =np.array(range(0,160,10)); v array([0, 10,20,30, 40,50,60, 70,80,90, 100,110,120, 130,140, 150]) Oncom menceparliredesélémentsindividu elsdans leve cteurv. >>>v[0] #le1er élément 0 >>>v[1]# le2ièmeélément 10 >>>v[2]# le3ièmeélément 20 >>>v[-1]# ledernierélément 150icioncompte àpartir dudébutici oncomp teàpartird elafinform ulationspeuclaires:àéviter
Oncon tinue,aveclemêmevecteu rv,eneffectuantquelquescoupesdevaleursconsécutivesdansl'ordredesindices
croissants,c'est-à-direavecla valeur1d'incrémentationpa rdéfaut: >>>v[4:11]# dev[4]à v[10],donc11-4 =7éléments consécutifs array([40,50, 60,70,80, 90,100]) >>>v[:6]# dev[0]à v[5],les6 premièresvaleurs dev array([0, 10,20, 30,40,50]) >>>v[6:] #(vétan tdelongueur p=16),dev[6] àv[p-1],lesp-6=10 dernièresvaleurs dev array([60,70, 80,90, 100,110, 120,130,140, 150]) >>>v[:]# latotalitédu vecteurv,c ommesion avaitécritv[0:p] array([0,10, 20,30,40, 50,60,70, 80,90,100, 110,120, 130,140, 150]) 8Voicimaintena ntdescoupesd'élémentsconsécut ifs,mais àl'envers,ettoujou rsaveclemêmevecteurv:
>>>v[11:4:-1] #dev[11 ]àv[5], donc|4-11|= 7éléments array([110,100, 90,80,70, 60,50]) >>>v[:6:-1]# dev[p-1=15]à v[7],donc|6-15| =9éléments array([150,140, 130,120,110, 100,90,80, 70]) >>>v[6::-1]# dev[6]à v[0],donc7 éléments array([60,50,40, 30,20, 10,0]) >>>v[::-1]# latotalitédu vecteur,mais àl'envers array([150,140,130, 120,110,100, 90,80,70, 60,50,40, 30,20, 10,0]) Etpo urfinir,descoupes dumêmevecteurv,maisavecunincrémentdifférentde1ou-1: >>>v[::4] array([0, 40,80,120]) >>>v[1::4] array([10,50, 90,130]) >>>v[::5] array([0,50, 100,150]) >>>v[:6:2] array([0,20, 40]) >>>v[:7:2] array([0,20, 40,60]) >>>v[10::2] array([100,120, 140]) >>>v[:5:-3] array([150,120,90, 60]) >>>v[:6:-3] array([150,120,90]) >>>v[6::-3] array([60,30,0])Sion écritunen tierxdansuntabl eau adeflot tants,pasdeproblème(xestconv ertienleflottantcorrespondan t).
Maissionécrit unflo ttantxdansuntabl eauad'entiers,alorsxestconv ertienunentier(partroncatur e,paspar
arrondi)pourl'écriture: iln'yadoncpas demessaged 'erreur,n imême d'avertissement.Le "data type»etl'adressed u
tableauanecha ngentpas.L'idéefondamentale aveclestableauxnumpyestque leur"data type»etleurt aill e(lenom bretotald'éléments)sont
fixéslors deleurcréation.Parso ucid'e ffi cacitéetd'économie,Pythonlimitelac réationd ecopiesdutable auinitial,et doncprivi légielesopérationsréalisées"enpla ce».Dansl'exemple ci-dessous,onvoit quel'instructiona[5]=12.99(oùaestunt ableau d'entiers)aété traduiteena[5]=12:
l'opérationaétée ff ectuée"enplace»(l'adres sed utableaue nmémoiren'apasch angé). >>>a =np.arange(10); >>>a,id(a) #demandele contenudu tableaua,etsonadresse (array([0,1, 2,3,4, 5,6,7, 8,9]),3957296) >>>a[5]= 12.99#on essaied'écrirele flottant12.99 enposition5 >>>a,id(a) #enfait, onaécr it12,et l'adressedeaestinchangée (array([0,1, 2,3,4, 12,6,7, 8,9]),3957296)Onp eutécrireplusieurs valeurssimultané mentdansunvecteur,en utilisantunesyntaxedu genrea[coupe]=....Ilf au t
simplementveilleràce quelemembrededroite(lasour ce)soit "arr ay-like »(unelist e,untuple,untableau)etq uela coupe
spécifiéea(donclacible)s oient demêmetaille.Ainsi,dans l'exempleci-dessou s,lesins tructionsa[4:7]=[111,222,333],
a[4:7]=(111,222,333)ouencore a[4:7]=np.array([111,222,333])ontlemêmeeffet: >>>a =np.arange(10); a array([0,1,2, 3,4, 5,6,7, 8,9]) >>>a[4:7]= [111,222,333];a# place111,222, 333enpositions respectives4,5, 6 array([0,1,2, 3,111,222, 333,7, 8,9])L'exemplesuivantest peut-êtremoinsévident.On commenceparforme runvecteurnuldelongueu r10(ave cledatatype
pardéfaut,do ncfloat),puiso névaluel 'instructiona[::2]= np.arange(1,6).Onaffectedoncrespectivementlescinq
valeursdutableauarray([1,2,3 ,4,5]) auxpositionsp airesdutableaua. >>>a =np.zeros(10); a,id(a)# unvecteurde10flottants égauxà0, etsonadresse (array([0., 0.,0.,0., 0.,0.,0., 0.,0.,0.]), 19048976) >>>a[::2]= np.arange(1,6);a #place 1,2,3,4,5auxpositions 0,2,4,6,8.Adresseinchangé e (array([1.,0., 2.,0.,3., 0.,4.,0., 5.,0.]),1904 8976) Autreexemple unpeutordu,oncopie levecte uraàl'enverssurlui-même: >>>a= np.arange(10);a array([0,1,2, 3,4,5, 6,7,8, 9]) >>>a[::-1]= a;a array([9,8, 7,6,5, 4,3,2, 1,0]) http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 10/58leve cteurnp.array([444,555,666]),ouparlamatrice-lignenp.array([[444,555,666]])mais(bizarr ement)paspar
lamatrice -colonnenp.array([[444],[ 555],[666]]). >>>m array([[0,1, 2,3], [10,11,12, 13], [20,21,22, 23]]) >>>m[:,1] =[444,555, 666];m array([[0, 444,2,3], [10,555,12,13], [20,666,22,23]])Ilya éno rmé mentdepossibilités,maisendeho rsdes troisprécédentes,ilfautvraimentenavoir l'utilité.
Justepourrévis erunpeul'utilis ationdecoupesàl'env ers::-1,citonslesexemplessuivants: >>>m array([[0,1, 2,3], [10,11,12, 13], [20,21,22, 23]]) >>>m[::-1] =m;m array([[20,21,22, 23], [10,11, 12,13], [0,1,2, 3]]) >>>m[:,::-1]= m;m array([[23,22, 21,20], [13,12,11 ,10], [3,2,1 ,0]]) ona inversé l'ordredeslignespuis inversél'ordred escolonn esLemod ulenumpypermetdetravaill erefficacementsurdestableauxpo ssédantun nombrefixé d'éléments,ceux-ciayant
unty pedonné.Toutcelasepa sseàl'ini tialisatio ndutabl eau. Aveccestab leaux,ona ppliquedoncunprinciped'éco nomie quiconsisteàe ff ectueraussipeuquep ossiblederecop iesde tableauxenmémoire,sauf demandee xplicite.Toutd épenddelaf onctionutiliséesurletableau .L'exemplesuivantes ttrèsimportant(parcequelasituation évoquéeicire vientsou vent).Levecte uracontenantun
tableaunumpy,lavariableapointeenfaitsur laposit iondecetable auenmémo ire.L' instructionb=anecrée pasune
nouvellecopiedutableaua,maiselledemandeàlavariablebdepo intersurlemêmetableauphysique quea.One xprimecettesituationend isantqueaetbconstituentunemêmevue("view »in engli sh)d'untableau numpy.
Lacon séquenceimmédiateestquetoutemodificationapporté eàcettevue(queces oitparl'intermé diairedelav ariable
aoude lavariableb)affecteceque"voient»etaetb.Ici ,parexemp le,aprèsa voirposéb=a,l'instructionb[2,1]=9
modifieletableauvupar b,c'est-à-direletableauvupara.C' estconfirméqu andonévaluelesexpres sionsid(a)et
id(b)quidonne ntunrésultatidentique(l'adresse decequ evoientaetb). >>>a array([[0,1, 2,3], [10,11,12,13], [20,21,22,23]]) >>>b =a >>>b[2,1]= 9;b array([[0, 1,2,3], [10,11,12,13], [20,9,22,23]]) >>>a array([[0,1 ,2,3], [10,11,12,13], [20,9,22,23]]) >>>id(a)Iles tbiensûrp ossiblede"d éconnecte r»complètementlestablea uxvusr esp ectivementpardeuxidentificateurs .
L'expressiona.copy()renvoieunecopie" neuve»dutab leaua,indépendantedel'original. http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 11/58Ondé cideensuited'annulerle sélémentsdeb(aveclaméthodefill,exposéeplusloin,etquitravaille"enplace»).
Onde mandeensuitelenouveauconte nudeb(c'est-à-direcequevoitb),et lerésultatn 'est passurprenant.
>>>a array([[0,1, 2,3,4, 5,6,7 ], [10,11,12, 13,14,15, 16,17], [20,21,22, 23,24,25, 26,27], [30,31,32, 33,34,35, 36,37], [40,41,42, 43,44,45, 46,47]]) >>>b= a[1:4,2:6] >>>b array([[12,13,14, 15], [22,23,24, 25], [32,33,34, 35]]) >>>b.fill(0) >>>b array([[0,0,0, 0], [0,0,0, 0], [0,0,0, 0]]) lamatrice ainitialeonen extraitu nesous- matricebonann ulelescoefficientsdebcréerbsontann uléseuxaussi!çaseconfirmeaprèsl 'inst ructionb.fill(1)quiremplit decoefficientségauxà1letable au
vupar b,c'est-à-direlasous-matricedeacorrespondandàladéfinitionde b. >>>a array([[0,1, 2,3,4, 5,6,7 ], [10,11,0, 0,0,0, 16,17], [20,21,0, 0,0,0, 26,27], [30,31,0, 0,0,0, 36,37], [40,41,42, 43,44,45, 46,47]]) >>>b.fill(1);a array([[0,1, 2,3, 4,5,6, 7], [10,11,1, 1,1,1, 16,17], [20,21,1, 1,1,1, 26,27], [30,31,1, 1,1,1, 36,37], [40,41,42 ,43,44, 45,46,47]]) annulerb,c'estannulerunevuec'estlamêmechoseenremplissantlamatric eb surla partiedut ableauadontbestissue decoefficientségauxà1Important:onretiendradoncquelireunecouped'untableaunumpya,çan'estpascréerunnouveautableau,c'est
renvoyerune"vue»surunsou s-tableaudea.Sion reprendl'ex empleprécédent,le tableauaestenq uelque sortelepèredeb.Letermeexactestlabasedeb.D'ailleurs
laméth odebaseduta bleaubrenvoieunevuesur letableaua.Iles tintéress antdevoirquemodifiera,c'estégalementmodifierb(exempleci-dessous ).Lelienentrelesdeuxtableaux
aetbestdoncà double sens(c' estnormal:il spart agentunemêmezonededonnées): >>>b.base array([[0,1, 2,3,4, 5,6,7 ], [10,11,1, 1,1,1, 16,17], [20,21,1, 1,1,1, 26,27], [30,31,1, 1,1,1, 36,37], [40,41,42, 43,44,45, 46,47]]) >>>a.fill(-1) >>>b array([[-1,-1,-1, -1], [-1,-1, -1,-1], [-1,-1,-1 ,-1]]) labas edutableaubc'estletabl eauamodifiera,c'estdoncaussimodifierb Pourplusde documentation surles ujet:http://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 12/58Onpe utaccéderauconte nud'untableaunumpytantenlec turequ'ené criture,enutilis antle"fancyin dexing»(selon
laterm inologieo ffi cielle...).Icilespositionsdansunv ecteur oudansun ematriceneprocèdentplusnéc essairementp ar des"co upes», maispeuventêt redo nnéesdansunordret outàfaitquelconque.Siaestunt ableau,et siIestunt ableaud' indices(éventuel lementunelisteouunt uple),alorsa[I]renvoieletableau
(demêmef ormatqueletable auI)formédesélémentsa[i],oùiestdansI. >>>a= np.arange(0,100,10);a array([0,10, 20,30,40, 50,60, 70,80,90]) >>>b= a[[6,2,1,3]];b array([60,20, 10,30]) >>>indices= np.array([[5,2,1],[3,8,7]]) >>>b= a[indices];b array([[50,20,10], [30,80,70 ]]) ondeman deletableau[a 6 ,a 2 ,a 1 ,a 3 ]ondeman deletableau [[a 5 ,a 2 ,a 1 ] [a 3 ,a 8 ,a 7 ]] >>>a =np.arange(24).reshape(4,6);a array([[0, 1,2,3, 4,5], [6,7,8 ,9,10,11 ], [12,13,14, 15,16,17], [18,19,20, 21,22,23]]) >>>b= a[[3,1,0,1]];b array([[18,19,20, 21,22, 23], [6,7,8, 9,10,11] , [0,1,2, 3,4,5] , [6,7,8, 9,10,11] ]) ondeman deletableaudeslignesa 3 ,a 1 ,a 0 ,a 1Subtilité:lestableauxbformésci-dessus(etqui nesontpas obtenuspas "slicing »)neso ntpasdesimples "vues»sur
unepar tiedea(lanotion aétédiscutéedansl aso us-sectio nprécédente).Ilssontdonc indépendants dea(modifierb
n'a ff ectepasaetréci proquement). Le"f anc yindexing»,çafon ctionneaussipourdesop érationsd'é criture: >>>a= np.arange(0,100,10);a array([0,10 ,20,30, 40,50,60,70,80, 90]) >>>a[[7,2, 5,3]] =(7777,222 2,5555,3333); a#on modifiea[7],a[2], a[5]eta[3] array([0,10 ,2222, 3333,40,5555,60,7777,80, 90])Aveca.put(positions,source)onremplace, termeàterme,lesvaleu rsde sourcedanslespo sitio nsindiquées.
>>>a= np.arange(10);a array([0,1,2, 3,4,5, 6,7,8, 9]) >>>a.put([6,1,5,2],[66,11,55,22]); a#place66enposition 6,11 enposition1, etc. array([0,11 ,22,3, 4,55,66,7, 8,9]) Aveca.take(positions)onlit,terme àterme,les valeurs deadanslespo sitionsi ndiquées. >>>a= np.arange(0,100,10);a array([0,10 ,20,30, 40,50,60,70,80, 90]) >>>np.take(a,[6,1, 5,0]) #renvoiele tableaudesvaleurs a[6],a[1],a[5 ],a[0] array([60,10,50, 0])Pourunema trice,onu tiliseraunargumentsuppl émentai re"axis=...»pourspécifierdansquelsensonfaitlalecture
(selonleslignes avecaxis=0,selonleslignesavecaxis=1).En l'absence decetteprécision,lalectures 'effectuecommesi
letable auavaitété"aplati ». >>>a =np.arange(0,160,10).reshape(4,4);a array([[0 ,10,20,30], [40,50,60 ,70], [80,90,100 ,110], [120,130,140 ,150]]) >>>i= np.array([3,0,2])#trois indices >>>a.take(i)# lecturedea"aplati" array([30,0, 20]) >>>a.take(i,axis=0) #lecturesdelignes array([[120,130, 140,150], [0,10,20,30], [80,90,100,1 10]]) >>>a.take(i,axis=1) #lecturesdecolonnes array([[30, 0,20], [70,40,60] , [110,80,100], [150,120,140]]) http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 13/58place(a,conds,b)écritdansalesvaleurs debauxpositionsd easpécifiéesparletableau debo oléensconds
>>>a =np.arange(10);a array([0,1,2, 3,4, 5,6,7, 8,9]) >>>np.place(a, np.mod(a,3)==0,0);a# remplacetoutesles valeursmultiples de3 pardes0 array([0,1,2, 0,4,5, 0,7,8, 0]) Lafon ctioncopytoestpresq uesynonymedela fonctionplace(sereporte ràladoc!) >>>a= np.arange(10);a array([0,1, 2,3,4, 5,6,7, 8,9]) >>>np.copyto(a,-1, where=np.mod(a,3)==0);a#remplace lesvaleurs multiplesde 3pardes -1 array([-1,1, 2,-1,4, 5,-1,7, 8,-1]) http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 14/58Laprin cipaleméthodepourmodifi erlatailled'untableauestreshape.Leredimensionnementd'untableauestquand
mêmesoumisà lacontr ainte quelenom bretotald'élémentsdoitresterconstant.On pourr aainsi passer(danslesdeux
sens)d'un vecteurdetai llenàunematricedetaille(p,q)ouàu nematrice detaille(r,s)àconditionquen=pq=rs.
Siaestunt abl eaunumpy,l'expressiona.reshape(n,p)renvoieunecopiered imensionnée(le contenudela variable
initialen'est doncpasa ff ecté,commeonleconstate ci-des sous ). >>>a =np.array(range(6));a array([0,1,2, 3,4, 5]) >>>a.reshape(1,6) array([[0,1,2, 3,4,5]]) >>>a array([0,1,2, 3,4,5]) >>>a.reshape(2,3 ) array([[0,1,2], [3,4,5]]) >>>a.reshape(3,2) array([[0,1], [2,3], [4,5]]) >>>a.reshape(6,1) array([[0], [1], [2], [3], [4], [5]])Ilya un eau trepossib ilitéquiconsis teàréinitialiserl'attributshaped'untabl eaunumpy.Ladifférenceaveccequi
précèdeestque leredimension nementestfait "surplace »,etdoncquelecontenudelava ria bles'entrouve a
ff ecté. >>>a= np.array(range(6)); >>>a array([0,1,2, 3,4,5]) >>>a.shape =(2,3);a #devientmatrice 2×3 array([[0,1,2], [3,4,5]]) >>>a.shape= (3,2);a# devientmatrice 3×2 array([[0,1], [2,3], [4,5]]) >>>a.shape= 6;a# redevientunvecteur array([0,1,2, 3,4,5])Autrepossib ilité,lafonctionresize,quipermetderedimensionnerunbloc,entransformant(surplace)untableauT
(ànéléments)enuntableauT ? (àn ?Lafonctionresizepermetégalementd ecréerdestableauxconstants conten antuneautreval eurque0et1(sinonon
utiliseraitlesfonctionszerosouones): >>>np.resize(1.23, 4) array([1.23, 1.23,1.23,1 .23]) >>>np.resize(9, 7) array([9,9,9, 9,9,9, 9]) >>>np.resize(5,(3,6)) array([[5,5, 5,5,5, 5], [5,5,5, 5,5,5], [5,5,5, 5,5,5]])Cettefonction estl'occasiondedécouvri runargume ntfacultatifsouventemployéqu andone stamenéàparcourirun
tableau.C'estl'argumentorder=...dontlaval eurpardéfautest order='C'etqui peutêtremo difiéenorder='F'.
Avecorder='C'(où'C'dési gnelel angagedeprogrammatio n)lepa rcourss'effectued'abordde gaucheàdroitesurune
ligneavant depasseràlalignes uivante(d oncl'indicedecolonnevariep rioritairemen t).Av ecorder='F'(où'F'd ésign e
lelan gagedeprogrammationF ortran)leparcou rss'e ff ectued'aborddehau tenbassuru necolonne avantdepass eràla colonnesuivan te(doncl'indicedelignevar iepriori tairement). >>>a =np.array([[1,5,3],[2,7,4]]) >>>a array([[1,5, 3], [2,7,4]]) >>>a.flatten()# parcourspar défaut(àdroite d'abord) array([1,5, 3,2,7, 4]) >>>a.flatten('F') #parcoursFortran(en basd'abord) array([1,2,5, 7,3,4]) Remarque:lafon ctionravelestp euouprousynon ymede flatten.Siaestunt able aunumpy,alorsa.flatrenvoieunitérateurp ermetd'ac céderséquentielle mentàtouslesélémen tsd'un
tableau(dansl'ordre'C' ou'F'quiaprési déàlacréationdutable au).L' intérê testqu'i ciiln'yap as( contrairementà
lafon ctionflatten)derecopiedutableau. >>>a array([[9,5,6], [8,7,4]]) >>>a.flat[3] 8 >>>sum(xfo rxin a.flat) 39Lafon ction(oulaméthode)transpose,ouplussimplementlaméthodeT,renvoientlatransposéed'unematrice:
>>>a array([[1,2, 3,4], [5,6,7 ,8], [9,10,11,12], [13,14,15, 16]]) >>>a.transpose() array([[1,5, 9,13], [2,6,10,1 4], [3,7,11,1 5], [4,8,12,1 6]]) >>>a.T array([[1,5, 9,13], [2,6,10 ,14], [3,7,11 ,15], [4,8,12 ,16]])delete(a,k,axis=0)etdelete(a,k,axis=1)supprimentrespectivement lak-ièmeligneet lak-ièmecolonnede a.
Letrois ièmeargumentindiqu edonclenumérod'in dice(l'axe)selonlequelonpratiquecettesuppression.L'argumentaxis=...esttr èssouventprésent (defaçonfacultativ e)danslesfonctionsdumodulenumpy:disonspour
simplifier,quepourdesmatrices (deuxindices), axis=0signifie"selonl'i ndicede ligne»etaxis=1signifie"selonl' indice
deco lonne».Souvent,d'a ill eurs,lemotaxispeutêtreom is. http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 16/58supprimelescolonnesd'i ndicepairsuppri melescolonnes d'indiceimpairsupprimelescol onnesd'indice0, 2,3
Lesexpre ssionsinsert(a,k,v,axis=0)etinsert(a,k,v,axis=1)permettentd'insérerlavaleur vrespectivement
avantlak-ièmeligneou avantlak-ièmecolonnedea.Voicideuxexemples: >>>a array([[0,1, 2,3], [10,11,12, 13], [20,21,22, 23]]) >>>np.insert(a ,2,-1,axis=1) array([[0,1, -1,2,3] , [10,11,- 1,12,13], [20,21, -1,22, 23]]) >>>np.insert(a,1,0,axis=0) array([[0,1, 2,3], [0,0,0 ,0], [10,11, 12,13], [20,21,22 ,23]]) unemat riceadety pe3×4insèredes-1justeavan tinsèredes0justeavan t lacolon ned'indice2laligne d'indice1Lesexpre ssionsappend(a,v,axis=0)etappend(a,v,axis=1)permettentd'ajouterunematri ce-colonneC(respecti-
vementunematric eV)aprèsladernièrel igne(respectivementaprèsladernièrecolonne)dea.Ilf aut veilleràceq uela
matriceajoutéeaitun formatcompatibleavec celuidea.Voicideuxexemples: >>>a array([[0,1, 2,3], [10,11, 12,13], [20,21,22, 23]]) >>>np.append( a,[[7],[8],[9]],1) array([[0,1, 2,3,7], [10,11,12, 13,8], [20,21,22, 23,9]]) >>>np.append(a,[[3,5,7,9]],0) array([[0, 1,2,3], [10,11,12, 13], [20,21,22, 23], [3,5,7, 9]]) unemat riceadety pe3×4ajouteunecolonn e[[7,8,9] ]ajouteuneligne[3,5, 7,9] aprèsladernière colonne aprèsladernièreligneEnrepr enantl'exempledelamatri ceprécédentea,onvoitcommentajouterlamatriceidentitéàdroitedelamatricea
(l'argumentintpermetdefaireens ortequ elerésultatsoi tencor eàcoefficientsentiers). >>>np.append(a ,np.identity(3),1) array([[0., 1.,2.,3.,1.,0., 0.], [10.,11.,12.,13.,0.,1.,0.], [20.,21.,22.,23.,0.,0.,1.]]) >>>np.append(a,np.identity(3,int),1) array([[0,1, 2,3, 1,0,0], [10,11, 12,13, 0,1,0], [20,21,22 ,23,0, 0,1]])Commeonlevoit ici,c' estflipudqu'ilfautu tiliserpourl'inv erserl'ordredeséléments desvecteurs :
>>>a= np.arange(1,10);a array([1,2,3, 4,5,6, 7,8,9]) >>>np.flipud(a) array([9,8,7, 6,5,4, 3,2,1]) Entreautresva riationspossibles,onpeutn' inverserqueleskpremiersélémentsd'un vecteur: >>>a= np.arange(1,10);a array([1,2,3, 4,5,6, 7,8,9]) >>>a[:7]= np.flipud(a[:7]);a array([7,6,5, 4,3,2, 1,8,9]) Danscete xemple,oninvers el'ordredesélémentsdela lignequ iestenposition2dansm: >>>m array([[0,1, 2,3,4], [10,11,12, 13,14], [20,21,22, 23,24], [30,31,32, 33,34]]) >>>m[2]= np.flipud(m[2]);m array([[0, 1,2,3, 4], [10,11,12 ,13,14], [24,23,22 ,21,20], [30,31, 32,33, 34]])Pourceuxq ueçaintéress e,rot90(m,k=1)renvoieunecopied elamatricemaprèskrotationsd'angleπ/2.
>>>m array([[0,1, 2,3], [10,11,12,13], [20,21,22,23]] >>>np.rot90(m) array([[3,13, 23], [2,12,22], [1,11,21], [0,10,20]]) >>>np.rot90(m,-1) array([[20,10,0], [21,11,1], [22,12,2], [23,13,3]]) >>>np.rot90(m,2) array([[23,22,21,20], [13,12,11,10], [3,2,1,0]]) rotationde 90˚rotationde -90˚rotationde180˚L'expressionroll(a,k,axis=None)renvoieunecopieduta bleauaprèskrotationsd'un eposition(versladroites i
k>0,verslagauchesik<0).Les éléments quisortentd'uncotérentren tdel'autre. Unnouveautableaues tcréé,ilne
s'agitdoncpasd'unerot ati on"en place».Pourune matrice,l'argumentaxisestfacult atif(pardéfautc'estunerotation
surles lignes).Pour unerotationsurlescolonnes d'unematri ce,onutili seral'argumentaxis=1. >>>a= np.arange(10);a array([0,1,2, 3,4, 5,6,7, 8,9]) >>>np.roll(a,1) array([9,0,1, 2,3,4, 5,6,7, 8]) >>>np.roll(a,2) array([8,9,0, 1,2,3, 4,5,6, 7]) >>>np.roll(a,-4) array([4,5,6, 7,8, 9,0,1, 2,3]) >>>m array([[0,1, 2,3], [10,11,12, 13], [20,21,22, 23]]) >>>np.roll(m,1,axis=0) array([[20,21,22, 23], [0,1,2 ,3], [10,11,12, 13]]) >>>np.roll(m,1,axis=1) array([[3,0, 1,2], [13,10,11, 12], [23,20,21, 22]]) >>>np.roll(m,-2,axis=1) array([[2,3, 0,1], [12,13,10, 11], [22,23,20, 21]]) diversesrotations d'unmêmevecteurrotationd'unelignevers lebasuneco lonne versladroi te oudeu xcolonnesverslagauc heL'expressionswapaxes(a,axe,axe')effectueunéchangedes axessur letableaua.Pourlesvecteurs,c'estsanseffet,
pourlesmatr icesc'est équivalentàlatransposit ion.Çanepeutdon cavoird'utilitépourlestableau xàn≥3indices.
>>>a= np.arange(30).reshape(2,3,5);a array([[[0,1, 2,3,4], [5,6,7 ,8,9], [10,11,1 2,13,14]], [[15,16, 17,18,19], [20,21,2 2,23,24], [25,26, 27,28, 29]]]) >>>np.swapaxes(a,0,1) array([[[0,1, 2,3,4], [15,16,17, 18,19]], [[5,6, 7,8, 9], [20,21,22, 23,24]], [[10,11, 12,13, 14], [25,26,27, 28,29]]]) deuxta bleauxdeformat3×5troistable auxdeformat2×5 http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 18/58concatenatepermetd'accolerd euxouplusieurstableaux(hor izontalement avecaxis=1,verticalementavecaxis=0).
Encas deconcaténat ion horizontaleparexemple,touteslescolo nnesdoiventavoirlamêmehauteur. Lesdi ff érentstableauxàconc aténerdoiventêtred onn éssouslaformed'untuple(voirexemple s): >>>a= np.array(range(8)).reshape(2,4) >>>a array([[0,1,2, 3], [4,5,6, 7]]) >>>b= np.zeros(a.shape,int);b array([[0,0,0, 0], [0,0,0, 0]]) >>>c= np.ones(a.shape,int);c array([[1,1,1, 1], [1,1,1, 1]]) >>>np.concatenate((a,b),axis=1) array([[0,1, 2,3,0, 0,0,0] , [4,5,6, 7,0,0, 0,0]]) >>>np.concatenate((a,b,c),axis=1) array([[0,1,2, 3,0, 0,0,0, 1,1,1, 1], [4,5,6, 7,0,0, 0,0,1, 1,1,1]]) >>>np.concatenate((a,c),axis=0) array([[0,1,2, 3], [4,5,6, 7], [1,1,1, 1], [1,1,1, 1]])Onpe utaussiutiliserles fonctionshstack(concaténationhorizontale)etvstack(concaténationverticale).
Voiciquelques exemplesenreprenantlasi gnificationprécédentedes tablea uxa,b,c: >>>np.vstack((a,c)) array([[0,1,2, 3], [4,5,6, 7], [1,1,1, 1], [1,1,1, 1]]) >>>np.hstack((a,c)) array([[0,1,2, 3,1,1, 1,1], [4,5,6, 7,1,1, 1,1]]) >>>np.hstack((a,b,c)) array([[0,1,2, 3,0, 0,0,0, 1,1,1, 1], [4,5,6, 7,0,0, 0,0,1, 1,1,1]])Lafon ctioncolumn_stackcombinedesvecteurs-l ignesen lescolonnesd'untableau.Onvoiticil adifférencedesrésult ats
obtenusenutilisanthstack,vstackoucolumn_stacksurun tuple dedeuxvecteurslignes aetb. >>>a =np.array((1,2,3)) >>>b= np.array((2,3,4)) >>>np.hstack((a,b)) array([1,2,3, 2,3, 4]) >>>np.vstack((a,b)) array([[1,2,3], [2,3,4]]) >>>np.column_stack((a,b)) array([[1,2], [2,3], [3,4]])Siaestunt ableaude nlignes,l'expressionvsplit(a,k)renvoieuntuplede ktableauxden/klignesreprésen tantun
découpagedutableaua(lenom brendeli gnesdeadoitêtreunmul tipledek). >>>a= np.array(range(24)).reshape(4,6);a array([[0,1, 2,3,4, 5], [6,7,8, 9,10,11] , [12,13,14, 15,16,17], [18,19,20, 21,22,23]]) >>>b,c =np.vsplit(a,2) >>>b array([[0,1, 2,3,4, 5], [6,7,8, 9,10,11] ]) >>>c array([[12,13,14, 15,16,17], [18,19,20 ,21,22, 23]]) unemat ricedetype4×6onlap artageend euxtableaux ded euxlignesSiaestun tableaudencolonnes,l'ex pressionhsplit(a,k)renvoieuntuplede ktableauxden/kcolonnesrepré sentant
undécoupa gedutableaua(lenom brendecol onnesdeadoitêtreunmul tipledek).Voiciunexempl eenréu tilisantladéfinitionp récéde ntedutableaua.Onapartargéaettr oistableauxx,y,zdedeux
colonnes,avant delescombineravechstackmaisdans l'ordre z,x,y. >>>x,y,z =np.hsplit(a,3) >>>print(x) [[01 ] [67] [1213] [1819]] >>>print(y) [[23] [89] [1415] [2021]] >>>print(z) [[45] [1011] [1617] [2223]] >>>print(np.hstack((z,x,y))) [[45 01 23] [10116 789] [161712 131415] [2223 181920 21]]Enfai t,lesfonctionshsplitetvsplitacceptentaussiund euxièmeargumentsou slaformed'u nelistecroissanted'ind ices,
cequi permetdechoi sirplusfinementlessépar ations enlignesouencolonnes. http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 19/58Onre prendànouveaul'exemple dutab leauaprécédent(etquipo ssède6colonnes).L'argument[2,5]signifiequ'on
marqueuneséparationjuste av antlacolonned'indice2,puisjusteavantlacolonned'indice5.Ile nr ésulte unpartage
deaentr oistableauxayantresp ectivement2,puis5-2=3,etenfin6-5=1colonnes. >>>x,y, z=np.hsplit(a,[2,5]) >>>x array([[0,1], [6,7], [12,13], [18,19]]) >>>y array([[2,3, 4], [8,9,1 0], [14,15,16 ], [20,21,22 ]]) >>>z array([[5], [11], [17], [23]])tile(a,[n,p])construituntableauenr épétan tnfoisletablea uadanslesens horizont alet pfoisdanslesensv ertical.
>>>a= [[1,2],[3,4]] >>>np.tile(a,2) array([[1,2,1, 2], [3,4,3, 4]]) >>>np.tile(a,[2,1]) array([[1,2], [3,4], [1,2], [3,4]]) >>>np.tile(a,[4,4]) array([[1,2,1, 2,1, 2,1,2] , [3,4,3, 4,3, 4,3,4], [1,2,1, 2,1, 2,1,2], [3,4,3, 4,3, 4,3,4], [1,2,1, 2,1, 2,1,2], [3,4,3, 4,3, 4,3,4], [1,2,1, 2,1, 2,1,2], [3,4,3, 4,3, 4,3,4]]) http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 20/58Ile stbiencom modedefabriq uerdestableauxdontle terme généralrépondàuneformuledo nnéeouauc ontraireest
obtenudefaçonpseu do-aléatoire.Onvoitici lesexempleslesp lusutiles.-lepre mierargument,obligatoire,p réciseleformat(shape)dutableau:unentiernpourunvect eurdel ongueurn,un
couple(n,p)pourunemat ricedetype n×p,ouencoreuntuple(n,p,q,r,...)pouruntabl eauàpl usdedeuxindices.
Attention:lasyntaxezeros(3,5)esti ncorrecte,ilfautécrirezeros((3,5)). -una rgumentfacultatifpermetde fixerletypededonnées(c'estfloatpardéfaut). >>>np.zeros(5) array([0.,0., 0.,0.,0.]) >>>np.zeros((1,5)) array([[0.,0., 0.,0., 0.]]) >>>np.zeros(5,int) array([0,0,0, 0,0]) >>>np.zeros((5,3)) array([[0.,0., 0.], [0.,0.,0. ], [0.,0.,0. ], [0.,0.,0. ], [0.,0.,0. ]]) >>>np.zeros((5,1),complex) array([[0.+0.j ], [0.+0.j], [0.+0.j], [0.+0.j], [0.+0.j]]) Avecunesyn taxeanalo gue,lafonctiononespermetdeformerde stable auxdonttouslescoe fficientsvalent1. >>>np.ones((3,6)) array([[1.,1., 1.,1.,1., 1.], [1.,1.,1., 1.,1.,1.] , [1.,1.,1., 1.,1.,1.] ]) >>>np.ones((3,6),int) array([[1,1,1, 1,1, 1], [1,1,1, 1,1,1], [1,1, 1,1,1, 1]]) Rappelonsquechezlesb ooléens,false= 0="nul»=" vide» ,etTrue=1="non nul»=" nonvid e»: >>>np.zeros((3,3),bool) array([[False,False,False], [False,False,False], [False,False,False]], dtype=bool) >>>np.ones((3,3 ),bool) array([[True,True, True], [True,True,True ], [True,True,True] ],dtype=bool) Laméth odefilld'untablea unumpyremplitcetableauparu nevaleur constante.Commelemontr entles exemplessuivants,leremp lissagese fait"enplace».L'adresse dutableauenmémoirenechange
pas.Enpart iculi er,iln'estpaspossibledemodifierle"dat atype» (voirl acolonned edroite,oulavaleurflot tan te3.14
aétéconvertieenlavaleurentière3pourleremplissage). >>>a =np.array([[1,5,3],[2,7,4]]) >>>a,id(a ) (array([[1,5,3], [2,7,4]]), 3899264) >>>a.fill(1); >>>a,id(a) (array([[1,1,1], [1,1,1]]), 3899264) >>>a.fill(3.14); >>>a,id(a) (array([[3,3,3], [3,3,3]]), 3899264)Onpe utégalementnoter lesfonctionsones_likeetzeros_likedontlerôl eestformerl etableauconstant( val eurs
One ndéduit unefaçontrèssimplede formerdes tableauxconstants ,oudumoinscon tenantdesrépétition s:
>>>np.array([2]*5) array([2,2,2, 2,2]) >>>np.array([1,2]*3) array([1,2,1, 2,1, 2]) >>>np.array([[1,2]]*3) array([[1,2], [1,2], [1,2]]) >>>np.array([[1,2],[3,4]]*2) array([[1,2], [3,4], [1,2], [3,4]])Lafon ctioneyepermetdefabriqu erlama triceidentitéouplusgénéral ementu nematricedonttousles coefficientssont
nulssaufce uxd'unecerta ine"parallè le»àladiagonale etquivalent1.Lepre mierargument(obligatoire)don nelenombrendeli gnes.Lesecondargumen t(faculta tif)donneleno mbrepde
colonnes(pardéfaut p=ndonclama triceestca rrée).Unargumentfacultat ifno mmék=..permetdespécifieru n
décalagedeladiagonal ede1aud essus(sik>0)ouen-dessous(sik<0)deladiagonaleprincipale. Enfin,on peutajouter unargument pourfixerletype desdonné es(floatpardéfaut). >>>np.eye(5,dt ype=int) 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]]) >>>np.eye(5,6,dtype=int) array([[1,0,0, 0,0,0], [0,1,0, 0,0,0], [0,0,1, 0,0, 0], [0,0,0, 1,0,0], [0,0, 0,0,1, 0]]) >>>np.eye(1,5) array([[1.,0., 0.,0.,0.]]) >>>np.eye(1,5,1) array([[0.,1., 0.,0., 0.]]) >>>np.eye(1,5,2) array([[0.,0., 1.,0.,0.]]) >>>np.eye(4,k= -2) array([[0.,0., 0.,0.], [0.,0.,0. ,0.], [1.,0.,0., 0.], [0.,1.,0., 0.]]) >>>np.eye(4,k=1) array([[0.,1., 0.,0.], [0.,0.,1., 0.], [0.,0.,0., 1.], [0.,0.,0., 0.]]) >>>np.eye(4,k=3) array([[0.,0., 0.,1.], [0.,0.,0., 0.], [0.,0.,0., 0.], [0.,0.,0., 0.]])Lafon ctiondiagrenvoieladiagonaled'un ematric e.Avecund euxièmeargument (facultatif)k,onobtientunesur-
diagonale(sik>0)ouunesous-diagonale(sik<0). >>>a array([[0,1, 2,3], [10,11,12, 13], [20,21,22, 23], [30,31,32, 33]]) >>>np.diag(a) array([0,11, 22,33]) >>>np.diag(a,1) array([1,12, 23]) >>>np.diag(a,2) array([2,13]) >>>np.diag(a,3) array([3]) >>>np.diag(a,-1) array([10,21,32]) >>>np.diag(a,-2) array([20,31]) >>>np.diag(a,-3) array([30])Inversement,lafonctiondiag,sielleestappliquéeàunvecteur(ouàuneliste,ouàuntuple)renvoielamatricediagonale
forméesurlescoe ffi cientsdecevecteur: >>>np.diag([1,2,3]) array([[1,0,0], [0,2,0], [0,0,3]]) >>>np.diag((1,2,3)) array([[1,0,0], [0,2,0], [0,0,3]]) >>>np.diag(np.array([1,2,3])) array([[1,0, 0], [0,2,0], [0,0,3]]) àpartird'unelisteàpartird'untupleàpartird'unvec teurRemarque:onsignale lesfon ctionsdiagonalàlaportéeunpeuplusgénéralequediagetdiagflat,etlefaitque
diagonalestaussiun attributdesta bleauxnumpy. http://creativecommons.org/licenses/by-sa/3.0/fr/ jean-miche.ferrard@ac-paris.frmathprepa.fr unepet iteréférenceNumpy 22/58Lafon ctiontriformeunematrice don tlescoefficientsvalent1lelong eten-d essousd 'unek-èmeparal lèleàladiagonale,
et0au-dessus.Onpeutpréciserle "dt ype»(c'estfloatpardéfau t): >>>np.tri(4) array([[1.,0., 0.,0.], [1.,1.,0. ,0.], [1.,1.,1., 0.], [1.,1.,1., 1.]]) >>>np.tri(4,k=1) array([[1.,1., 0.,0.], [1.,1.,1. ,0.], [1.,1.,1., 1.], [1.,1.,1., 1.]]) >>>np.tri(4,k=-1,dtype=int) array([[0,0,0, 0], [1,0,0, 0], [1,1,0, 0], [1,1,1, 0]])Appliquéeàuntableaunumpylesfonction stril(Lpou rlow)ettriu(Upou rup)renvoieunecopiedutableauoù
touslesco e ffi cientsau-dessus ouen-dessousd'unecertainediagonaleont étéan nulés(voirexemples): >>>a array([[1,2, 3,4], [5,6,7 ,8], [9,10,11,12], [13,14,15, 16]]) >>>np.tril(a) array([[1,0, 0,0], [5,6,0 ,0], [9,10,11,0], [13,14,15 ,16]]) >>>np.triu(a) array([[1,2, 3,4], [0,6,7 ,8], [0,0,11 ,12], [0,0,0 ,16]]) >>>np.tril(a,1 ) array([[1,2, 0,0], [5,6,7 ,0], [9,10,11,12], [13,14,15, 16]]) >>>np.tril(a,-1) array([[0,0, 0,0], [5,0,0, 0], [9,10,0,0], [13,14,15 ,0]]) >>>np.triu(a,-1) array([[1,2, 3,4], [5,6,7 ,8], [0,10,11,12], [0,0,15,1 6]])Pourlesval eursdansl etypefloatoucomplex,etpouréviteruneerreurd'arrondiquipourraitaffecterladernièrevaleur
del' intervalle,ilpeutêtrepréférabled'utiliserlafoncti onlinspace.Lasyn taxeestlinspace(a,b,n)etle résultatestun vecteurdenvaleursrégulièremen téchelonnéesdusegment[a,b]
>>>a =np.vander([1,10,100]);print(a) [[1 11] [100101] [10000100 1]] >>>np.linalg.det(a) -80190.000000000102 >>>a= np.vander(range(1,6));print(a) [[11 111] [168421 ] [812793 1] [2566416 41] [62512525 51]] Voicicommenté crirenotreproprefonc tionvandermonde: >>>def vandermonde(x):# icionattenduneliste ouunintervalle importnumpyas np;n= len(x);x= np.array(x) returnnp.vstack([x**i foriinrange(n)]) >>>a= vandermonde([1,10,100]);print(a) [[11 1] [110100] [110010000]] >>>np.linalg.det(a)Lesfonction squiformentdestableauxp seudo- aléatoiressontprésen tesdanslesous -modulerandomdumodul enumpy.
random.randrenvoieuntableaude valeursps eudo-aléatoiresdan sl'intervalle [0,1](aus ensdeladistributionu niforme).
Lafon ctionrandom.randnsuitlamêmesy ntaxeq uerandom.rand,maisellerenvoieunéchantillondevaleurspseudo-
aléatoiresausen sde laloinormalerédu ite(c'est-à-dired 'espéran ce0etd'écar t-type1). >>>np.random.randn(6) array([-0.75931933,0.49230711, 0.37242323,1.17957196, -2.26637722,1.05330359])Appeléesavecunargumentvide ,lesfonctionsrandom.randetrandom.randnrenvoieunnombrep seudo-alé atoire(res-
pectivementpourlaloiuniformede [0,1]oupou rlaloinormaleN(0,1)).Lafon ctionrandom.randintrenvoieunevaleur ouuntableaudev aleursentièresps eud o-aléatoiresaus ensdela
distributionuniformedansunintervall esemi-ouvert[a,b[.Las yntaxeestrandom.randint(a,b)pouruneseu levaleur, random.randint(a,b,n)pou