logo

numpy.reshape() v Pythonu

Funkcija numpy.reshape() je na voljo v paketu NumPy. Kot že ime pove, preoblikovanje pomeni 'spremembe oblike'. Funkcija numpy.reshape() nam pomaga, da dobimo novo obliko matrike, ne da bi spremenili njene podatke.

Včasih moramo podatke preoblikovati iz širokih v dolge. V tej situaciji moramo torej preoblikovati matriko s funkcijo reshape().

Sintaksa

 numpy.reshape(arr, new_shape, order='C') 

Parametri

Obstajajo naslednji parametri funkcije reshape():

1) arr: array_like

To je ndarray. To je izvorni niz, ki ga želimo preoblikovati. Ta parameter je bistvenega pomena in igra ključno vlogo v funkciji numpy.reshape().

tabela ascii java

2) nova_oblika: int ali tuple int

Oblika, v katero želimo pretvoriti prvotno matriko, mora biti združljiva z izvirno matriko. Če je celo število, bo rezultat 1-D niz te dolžine. Ena dimenzija oblike je lahko -1. Tukaj je vrednost približno ocenjena z dolžino niza in preostalimi dimenzijami.

3) vrstni red: {'C', 'F', 'A'}, neobvezno

Parameter vrstnega reda teh indeksov igra ključno vlogo v funkciji reshape(). Ti indeksni vrstni red se uporabljajo za branje elementov izvorne matrike in postavitev elementov v preoblikovano matriko z uporabo tega indeksnega vrstnega reda.

  1. Indeksni vrstni red 'C' pomeni branje/pisanje elementov, ki uporabljajo indeksni vrstni red, podoben C, kjer se indeks zadnje osi spreminja najhitreje, nazaj na indeks prve osi, ki se spreminja najpočasneje.
  2. Indeksni vrstni red 'F' pomeni branje/pisanje elementov, ki uporabljajo fortranski podoben vrstni red indeksov, kjer se indeks zadnje osi spreminja najpočasneje in indeks prve osi najhitreje.
  3. Vrstni red 'C' in 'F' ne zavzameta nobene količine pomnilniške postavitve osnovne matrike in se nanašata samo na vrstni red indeksiranja.
  4. Indeksni vrstni red 'A' pomeni branje/pisanje elementov v vrstnem redu, podobnem fortranu, ko je arr soseden v pomnilniku, sicer uporabite vrstni red, podoben C.

Vračila

Ta funkcija vrne ndarray. Če je mogoče, je to nov objekt pogleda; sicer bo kopija. Nobenega jamstva ni za postavitev pomnilnika vrnjenega polja.

Primer 1: Urejanje indeksov v obliki C

 import numpy as np x=np.arange(12) y=np.reshape(x, (4,3)) x y 

Izhod:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) 

V zgornji kodi

  • Uvozili smo numpy z vzdevkom np.
  • S funkcijo np.arrange() smo ustvarili matriko 'a'.
  • Razglasili smo spremenljivko 'y' in dodelili vrnjeno vrednost funkcije np.reshape().
  • Posredovali smo polje 'x' in obliko v funkciji.
  • Nazadnje smo poskušali natisniti vrednost arr.

V izhodu je bila matrika predstavljena kot tri vrstice in štirje stolpci.

Primer 2: Enakovredno C ravel nato C preoblikovanje

 import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x),(3,4)) x y 

Funkcija ravel() se uporablja za ustvarjanje sosednje sploščene matrike. Vrnjena je enodimenzionalna matrika, ki vsebuje elemente vhoda. Kopija se naredi le, ko je potrebna.

kaj je računalnik

Izhod:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) 

Primer 3: Urejanje indeksov, podobno Fortranu

 import numpy as np x=np.arange(12) y=np.reshape(x, (4, 3), order='F') x y 

Izhod:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 4, 8], [ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11]]) 

V zgornji kodi

  • Uvozili smo numpy z vzdevkom np.
  • S funkcijo np.arrange() smo ustvarili matriko 'a'.
  • Razglasili smo spremenljivko 'y' in dodelili vrnjeno vrednost funkcije np.reshape().
  • V funkciji smo posredovali matriko 'x' ter obliko in Fortran podoben vrstni red indeksov.
  • Nazadnje smo poskušali natisniti vrednost arr.

V izhodu je bila matrika predstavljena kot štiri vrstice in trije stolpci.

Primer 4: Urejanje indeksov, podobno Fortranu

 import numpy as np x=np.arange(12) y=np.reshape(np.ravel(x, order='F'), (4, 3), order='F') x y 

Izhod:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 4, 8], [ 1, 5, 9], [ 2, 6, 10], [ 3, 7, 11]]) 

Primer 5: nedoločena vrednost je ugotovljena kot 2

 import numpy as np x=np.arange(12) y=np.reshape(x, (2, -1)) x y 

V zgornji kodi

  • Uvozili smo numpy z vzdevkom np.
  • S funkcijo np.arrange() smo ustvarili matriko 'a'.
  • Razglasili smo spremenljivko 'y' in dodelili vrnjeno vrednost funkcije np.reshape().
  • V funkciji smo posredovali matriko 'x' in obliko (nedoločeno vrednost).
  • Nazadnje smo poskušali natisniti vrednost arr.

V izhodu je bila matrika predstavljena kot dve vrstici in pet stolpcev.

Izhod:

 array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) array([[ 0, 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10, 11]])