NumPy Array Hervorming


Hervorm skikkings

Hervorm beteken om die vorm van 'n skikking te verander.

Die vorm van 'n skikking is die aantal elemente in elke dimensie.

Deur te hervorm kan ons dimensies byvoeg of verwyder of die aantal elemente in elke dimensie verander.


Hervorm van 1-D na 2-D

Voorbeeld

Skakel die volgende 1-D-skikking met 12 elemente om in 'n 2-D-skikking.

Die buitenste dimensie sal 4 skikkings hê, elk met 3 elemente:

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)

Hervorm van 1-D na 3-D

Voorbeeld

Skakel die volgende 1-D-skikking met 12 elemente om in 'n 3-D-skikking.

Die buitenste dimensie sal 2 skikkings hê wat 3 skikkings bevat, elk met 2 elemente:

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)


Kan ons in enige vorm hervorm?

Ja, solank die elemente wat nodig is vir hervorming, gelyk is in beide vorms.

Ons kan 'n 8 elemente 1D skikking hervorm in 4 elemente in 2 rye 2D skikking maar ons kan dit nie hervorm in 'n 3 elemente 3 rye 2D skikking nie, aangesien dit 3x3 = 9 elemente sal vereis.

Voorbeeld

Probeer om 1D-skikking met 8 elemente om te skakel na 'n 2D-skikking met 3 elemente in elke dimensie (sal 'n fout veroorsaak):

import numpy as np

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

newarr = arr.reshape(3, 3)

print(newarr)

Gee Kopieer of Bekyk terug?

Voorbeeld

Kyk of die teruggekeerde skikking 'n kopie of 'n aansig is:

import numpy as np

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

print(arr.reshape(2, 4).base)

Die voorbeeld hierbo gee die oorspronklike skikking terug, so dit is 'n aansig.


Onbekende afmeting

Jy word toegelaat om een ​​"onbekende" dimensie te hê.

Dit beteken dat jy nie 'n presiese getal vir een van die afmetings in die hervormmetode hoef te spesifiseer nie.

Slaag -1as die waarde, en NumPy sal hierdie getal vir jou bereken.

Voorbeeld

Skakel 1D-skikking met 8 elemente om na 3D-skikking met 2x2-elemente:

import numpy as np

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

newarr = arr.reshape(2, 2, -1)

print(newarr)

Let wel: Ons kan nie -1na meer as een dimensie oorgaan nie.


Maak die skikkings plat

Om skikking plat te maak beteken die omskakeling van 'n multidimensionele skikking in 'n 1D-skikking.

Ons kan gebruik reshape(-1)om dit te doen.

Voorbeeld

Skakel die skikking om in 'n 1D-skikking:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6]])

newarr = arr.reshape(-1)

print(newarr)

Let wel: Daar is baie funksies om die vorms van skikkings in numpy te verander flatten, ravelen ook om die elemente rot90, flip, fliplr, flipudens te herrangskik. Dit val onder Intermediêre tot Gevorderde afdeling van numpy.


Toets jouself met oefeninge

Oefening:

Gebruik die korrekte NumPy-metode om die vorm van 'n skikking van 1-D na 2-D te verander.

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

newarr = arr.(4, 3)