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 -1de 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 -1naar 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, ravelen ook voor het herschikken van de elementen rot90, flip, fliplr, flipudenz. Deze vallen onder de sectie Gemiddeld tot Geavanceerd van numpy.


Test jezelf met oefeningen

Oefening:

Gebruik de juiste NumPy-methode om de vorm van een array te wijzigen van 1D naar 2D.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)