single
Arrays Herschikken
Veeg om het menu te tonen
Array-herstructurering in NumPy maakt het mogelijk om de vorm van een array te wijzigen terwijl alle elementen behouden blijven. Dit is een veelgebruikte bewerking in de machine learning, omdat veel functies en methoden van machine learning-bibliotheken vereisen dat arrays een specifieke vorm hebben.
Array-vormen
De vorm van een NumPy-array is een tuple die het aantal elementen langs elke dimensie (as) aangeeft.
Bijvoorbeeld, een 1D-array met lengte 5 heeft een vorm van (5,), terwijl een 2D-array met 3 rijen en 4 kolommen een vorm van (3, 4) heeft:
1234import numpy as np array_1d = np.array([5, 7, 1, 10, 9]) array_2d = np.zeros((3, 4)) print(array_1d.shape, array_2d.shape)
ndarray.reshape()
NumPy-arrays beschikken over een .reshape()-methode voor het herschikken van arrays. Alleen de vorm van de resulterende array hoeft te worden opgegeven, hetzij als een geheel getal, een tuple van gehele getallen, of gehele getallen als aparte argumenten.
Deze methode wijzigt de array niet in-place, maar retourneert een nieuwe array.
Eigenlijk retourneert .reshape() een view van de originele array, waardoor alle wijzigingen die in de hervormde array worden aangebracht ook de originele array beïnvloeden.
123456789import numpy as np # Creating a 1D array from 0 to 11 inclusive array = np.arange(12) # Reshaping the array to a 3x4 2D array (matrix) reshaped_array_2d = array.reshape(3, 4) print(reshaped_array_2d) # Reshaping the array to a 2x2x3 3D array reshaped_array_3d = array.reshape(2, 2, 3) print(reshaped_array_3d)
Het aantal elementen in de hervormde array moet gelijk zijn aan dat van de originele array, dus je kunt geen willekeurige vorm opgeven.
In ons voorbeeld resulteert het herschikken van de array naar een vorm van 3 rijen en 4 kolommen (3x4) of naar een vorm van 2 blokken, elk met 2 rijen en 3 kolommen (2x2x3) nog steeds in een totaal van 12 elementen.
Hershapen met -1
In NumPy wordt bij het gebruik van -1 in de .reshape()-methode de grootte van die dimensie automatisch berekend op basis van de grootte van de oorspronkelijke array, terwijl het totale aantal elementen gelijk blijft.
Het gebruik van .reshape(-1, 1) is vooral handig in machine learning wanneer een 1D-array moet worden omgezet naar een 2D-array met één kolom. Het aantal rijen is in dit geval gelijk aan het aantal elementen (automatisch berekend).
123456import numpy as np # Creating a 1D array from 0 to 4 inclusive array = np.arange(5) # Reshaping the array to a 2D array with one column reshaped_array = array.reshape(-1, 1) print(reshaped_array)
De omgevormde array wordt opgeslagen als een 2D-array met 5 rijen en 1 kolom, met de vorm (5, 1). Ter vergelijking: de oorspronkelijke 1D-array heeft de vorm (5,), wat een tuple met één element is. Voor elke 1D-array is de vorm altijd (n,), waarbij n het aantal elementen aangeeft.
numpy.reshape()
De functie reshape() in NumPy is identiek aan de .reshape()-methode, maar je moet een array als eerste argument meegeven. Voor de parameter shape kun je een tuple van gehele getallen of een enkel geheel getal opgeven, bijvoorbeeld: np.reshape(array, (3, 4)):
123456import numpy as np # Creating a 1D array from 0 to 11 inclusive array = np.arange(12) # Reshaping the array to a 3x4 2D array (matrix) reshaped_array_2d = np.reshape(array, (3, 4)) print(reshaped_array_2d)
Veeg om te beginnen met coderen
Je beschikt over een array sales_data_2021 met gesimuleerde kwartaalverkoopgegevens voor twee producten in 2021. De eerste 4 elementen vertegenwoordigen de kwartaalverkopen van het eerste product, en de laatste 4 elementen vertegenwoordigen de kwartaalverkopen van het tweede product.
- Gebruik de juiste methode van
sales_data_2021om deze om te vormen tot een 2D-array. - De eerste rij moet de kwartaalverkopen van het eerste product bevatten.
- De tweede rij moet de kwartaalverkopen van het tweede product bevatten.
Oplossing
Bedankt voor je feedback!
single
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.