logo

numpy.reshape() in Python

De functie numpy.reshape() is beschikbaar in het NumPy-pakket. Zoals de naam al doet vermoeden betekent reshape 'vormverandering'. De functie numpy.reshape() helpt ons een nieuwe vorm aan een array te krijgen zonder de gegevens ervan te wijzigen.

Soms moeten we de gegevens hervormen van breed naar lang. Dus in deze situatie moeten we de array opnieuw vormgeven met behulp van de functie reshape().

Syntaxis

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

Parameters

Er zijn de volgende parameters voor de functie reshape():

1) arr: array_like

Dit is een ndarray. Dit is de bronarray die we opnieuw willen vormgeven. Deze parameter is essentieel en speelt een cruciale rol in de functie numpy.reshape().

html-lijst

2) new_shape: int of tuple van ints

De vorm waarin we onze originele array willen converteren, moet compatibel zijn met de originele array. Als het een geheel getal is, is het resultaat een 1D-array van die lengte. Eén vormdimensie kan -1 zijn. Hier wordt de waarde benaderd door de lengte van de array en de resterende afmetingen.

3) volgorde: {'C', 'F', 'A'}, optioneel

Deze indexvolgordeparameter speelt een cruciale rol in de reshape()-functie. Deze indexorders worden gebruikt om de elementen van de bronarray te lezen en de elementen met behulp van deze indexvolgorde in de opnieuw vormgegeven array te plaatsen.

  1. De indexvolgorde 'C' betekent het lezen/schrijven van de elementen die een C-achtige indexvolgorde gebruiken, waarbij de laatste asindex het snelst verandert, terug naar de eerste asindex die het langzaamst verandert.
  2. De indexvolgorde 'F' betekent het lezen/schrijven van de elementen die de Fortran-achtige indexvolgorde gebruiken, waarbij de laatste asindex het langzaamst verandert en de eerste asindex het snelst verandert.
  3. De 'C'- en 'F'-volgorde neemt geen deel van de geheugenindeling van de onderliggende array in beslag en verwijst alleen naar de volgorde van indexering.
  4. De indexvolgorde 'A' betekent dat de elementen in Fortran-achtige indexvolgorde moeten worden gelezen/geschreven, wanneer arr aaneengesloten in het geheugen is, gebruik anders een C-achtige volgorde.

Geeft terug

Deze functie retourneert een ndarray. Het is indien mogelijk een nieuw kijkobject; anders zal het een kopie zijn. Er is geen garantie voor de geheugenindeling van de geretourneerde array.

Voorbeeld 1: C-achtige indexvolgorde

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

Uitgang:

 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]]) 

In de bovenstaande code

  • We hebben numpy geïmporteerd met aliasnaam np.
  • We hebben een array 'a' gemaakt met behulp van de functie np.arrange().
  • We hebben de variabele 'y' gedeclareerd en de geretourneerde waarde van de functie np.reshape() toegewezen.
  • We hebben de array 'x' en de vorm in de functie doorgegeven.
  • Ten slotte hebben we geprobeerd de waarde van arr af te drukken.

In de uitvoer is de array weergegeven als drie rijen en vier kolommen.

Voorbeeld 2: Equivalent aan C ravel en vervolgens C reshape

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

De functie ravel() wordt gebruikt voor het maken van een aaneengesloten afgevlakte array. Er wordt een eendimensionale array geretourneerd die de elementen van de invoer bevat. Er wordt alleen een kopie gemaakt als dat nodig is.

tekenreeks.formaat

Uitgang:

 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]]) 

Voorbeeld 3: Fortran-achtige indexvolgorde

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

Uitgang:

 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]]) 

In de bovenstaande code

  • We hebben numpy geïmporteerd met aliasnaam np.
  • We hebben een array 'a' gemaakt met behulp van de functie np.arrange().
  • We hebben de variabele 'y' gedeclareerd en de geretourneerde waarde van de functie np.reshape() toegewezen.
  • We hebben de array 'x' en de vorm en Fortran-achtige indexvolgorde in de functie doorgegeven.
  • Ten slotte hebben we geprobeerd de waarde van arr af te drukken.

In de uitvoer is de array weergegeven als vier rijen en drie kolommen.

Voorbeeld 4: Fortran-achtige indexvolgorde

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

Uitgang:

 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]]) 

Voorbeeld 5: Er wordt afgeleid dat de niet-gespecificeerde waarde 2 is

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

In de bovenstaande code

  • We hebben numpy geïmporteerd met aliasnaam np.
  • We hebben een array 'a' gemaakt met behulp van de functie np.arrange().
  • We hebben de variabele 'y' gedeclareerd en de geretourneerde waarde van de functie np.reshape() toegewezen.
  • We hebben de array 'x' en de vorm (niet-gespecificeerde waarde) in de functie doorgegeven.
  • Ten slotte hebben we geprobeerd de waarde van arr af te drukken.

In de uitvoer is de array weergegeven als twee rijen en vijf kolommen.

Uitgang:

 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]])