NumPy- array opnieuw vormgeven
Arrays hervormen
Hervormen betekent het veranderen van de vorm van een array.
De vorm van een array is het aantal elementen in elke dimensie.
Door een nieuwe vorm te geven, kunnen we dimensies toevoegen of verwijderen of het aantal elementen in elke dimensie wijzigen.
Hervormen van 1D naar 2D
Voorbeeld
Converteer de volgende 1-D-array met 12 elementen naar een 2D-array.
De buitenste dimensie heeft 4 arrays, elk met 3 elementen:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12])
newarr = arr.reshape(4, 3)
print(newarr)
Hervormen van 1D naar 3D
Voorbeeld
Converteer de volgende 1-D-array met 12 elementen naar een 3D-array.
De buitenste dimensie heeft 2 arrays die 3 arrays bevatten, elk met 2 elementen:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12])
newarr = arr.reshape(2, 3, 2)
print(newarr)
Kunnen we een andere vorm aannemen?
Ja, zolang de voor het omvormen benodigde elementen in beide vormen gelijk zijn.
We kunnen een 1D-array met 8 elementen omvormen tot 4 elementen in een 2D-array met 2 rijen, maar we kunnen het niet omvormen tot een 2D-array met 3 elementen en 3 rijen, omdat daarvoor 3x3 = 9 elementen nodig zijn.
Voorbeeld
Probeer een 1D-array met 8 elementen te converteren naar een 2D-array met 3 elementen in elke dimensie (er zal een fout optreden):
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)
Retourneren Kopiëren of Bekijken?
Voorbeeld
Controleer of de geretourneerde array een kopie of een weergave is:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)
Het bovenstaande voorbeeld retourneert de originele array, dus het is een weergave.
Onbekende dimensie
U mag één "onbekende" dimensie hebben.
Dit betekent dat u geen exact aantal hoeft op te geven voor een van de dimensies in de reshape-methode.
Geef -1
de waarde door en NumPy berekent dit aantal voor u.
Voorbeeld
Converteer 1D-array met 8 elementen naar 3D-array met 2x2 elementen:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)
Opmerking: we kunnen niet doorgaan -1
naar meer dan één dimensie.
De arrays afvlakken
Flattening array betekent het omzetten van een multidimensionale array in een 1D array.
We kunnen hiervoor gebruiken reshape(-1)
.
Voorbeeld
Converteer de array naar een 1D-array:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr
= arr.reshape(-1)
print(newarr)
Opmerking: er zijn veel functies voor het wijzigen van de vorm van arrays in numpy flatten
, ravel
en ook voor het herschikken van de elementen rot90
, flip
, fliplr
, flipud
enz. Deze vallen onder de sectie Gemiddeld tot Geavanceerd van numpy.