Gegevenswetenschap

Python NumPy-zelfstudie

Python NumPy-zelfstudie
In deze les over de Python NumPy-bibliotheek zullen we bekijken hoe deze bibliotheek ons ​​in staat stelt om krachtige N-dimensionale array-objecten te beheren met geavanceerde functies die aanwezig zijn om deze arrays te manipuleren en te bedienen. Om deze les compleet te maken, behandelen we de volgende onderdelen:

Wat is het Python NumPy-pakket??

Simpel gezegd, NumPy staat voor 'Numerical Python' en dat is wat het wil vervullen, om complexe numerieke bewerkingen op N-dimensionale array-objecten heel gemakkelijk en op een intuïtieve manier mogelijk te maken. Het is de kernbibliotheek die wordt gebruikt in wetenschappelijk computergebruik, met aanwezige functies om lineaire algebraïsche bewerkingen en statistische bewerkingen uit te voeren.

Een van de meest fundamentele (en aantrekkelijke) concepten voor NumPy is het gebruik van N-dimensionale array-objecten. We kunnen deze array nemen als gewoon a verzameling rijen en kolommen, net als een MS-Excel-bestand. Het is mogelijk om een ​​Python-lijst om te zetten in een NumPy-array en er functies op te gebruiken.

NumPy Array-weergave

Even een opmerking voordat we beginnen, we gebruiken een virtuele omgeving voor deze les die we hebben gemaakt met het volgende commando:

python -m virtualenv numpy
bron numpy/bin/activate

Zodra de virtuele omgeving actief is, kunnen we de numpy-bibliotheek in de virtuele omgeving installeren, zodat de voorbeelden die we vervolgens maken, kunnen worden uitgevoerd:

pip installeer numpy

We zien zoiets als dit wanneer we het bovenstaande commando uitvoeren:

Laten we snel testen of het NumPy-pakket correct is geïnstalleerd met het volgende korte codefragment:

importeer numpy als np
a = np.reeks([1,2,3])
afdrukken (een)

Nadat u het bovenstaande programma hebt uitgevoerd, zou u de volgende uitvoer moeten zien:

We kunnen ook multidimensionale arrays hebben met NumPy:

multi_dimensie = np.reeks([(1, 2, 3), (4, 5, 6)])
print(multi_dimensie)

Dit levert een uitvoer op als:

[[1 2 3]
[4 5 6]]

Je kunt Anaconda ook gebruiken om deze voorbeelden uit te voeren, wat gemakkelijker is en dat is wat we hierboven hebben gebruikt. Als je het op je computer wilt installeren, kijk dan naar de les die beschrijft "Hoe Anaconda Python op Ubuntu 18 te installeren".04 LTS” en deel uw feedback. Laten we nu verder gaan met verschillende soorten bewerkingen die kunnen worden uitgevoerd met Python NumPy-arrays.

NumPy-arrays gebruiken over Python-lijsten

Het is belangrijk om te vragen dat wanneer Python al een geavanceerde gegevensstructuur heeft om meerdere items te bevatten, waarom we dan überhaupt NumPy-arrays nodig hebben? De NumPy-arrays zijn: voorkeur boven Python-lijsten vanwege de volgende redenen:

Laat ons bewijzen dat NumPy-arrays minder geheugen in beslag nemen. Dit kan door een heel eenvoudig Python-programma te schrijven:

importeer numpy als np
import tijd
import systeem
python_list = bereik (500)
print(sys).getsizeof(1) * len(python_list))
numpy_arr = np.bereik(500)
print(numpy_arr.maat * numpy_arr.artikelgrootte)

Wanneer we het bovenstaande programma uitvoeren, krijgen we de volgende uitvoer:

14000
4000

Dit laat zien dat dezelfde maatlijst is meer dan 3 keer in grootte in vergelijking met NumPy-array van dezelfde grootte.

NumPy-bewerkingen uitvoeren

Laten we in deze sectie snel een blik werpen op de bewerkingen die kunnen worden uitgevoerd op NumPy-arrays.

Dimensies in array zoeken

Omdat de NumPy-array in elke dimensionale ruimte kan worden gebruikt om gegevens op te slaan, kunnen we de dimensie van een array vinden met het volgende codefragment:

importeer numpy als np
numpy_arr = np.array([(1,2,3),(4,5,6)])
print(numpy_arr.ndim)

We zullen de uitvoer zien als "2" omdat dit een 2-dimensionale array is.

Gegevenstype van items in array zoeken

We kunnen NumPy-array gebruiken om elk gegevenstype vast te houden. Laten we nu eens kijken naar het gegevenstype van de gegevens die een array bevat:

andere_arr = np.array([('awe', 'b', 'cat')])
print(other_arr.dtype)
numpy_arr = np.array([(1,2,3),(4,5,6)])
print(numpy_arr.dtype)

We hebben verschillende soorten elementen gebruikt in het bovenstaande codefragment. Dit is de uitvoer die dit script laat zien:

int64

Dit gebeurt als tekens worden geïnterpreteerd als Unicode-tekens en de tweede is duidelijk.

De vorm van items van een array wijzigen

Als een NumPy-array uit 2 rijen en 4 kolommen bestaat, kan deze worden omgevormd tot 4 rijen en 2 kolommen. Laten we hiervoor een eenvoudig codefragment schrijven:

origineel = np.array([('1', 'b', 'c', '4'), ('5', 'f', 'g', '8')])
afdrukken (origineel)
hervormd = origineel.omvormen(4, 2)
afdrukken (hervormd)

Nadat we het bovenstaande codefragment hebben uitgevoerd, krijgen we de volgende uitvoer met beide arrays op het scherm afgedrukt:

[['1' 'b' 'c' '4']
['5' 'f' 'g' '8']]
[['1' 'b']
['c' '4']
['5' 'f']
['g' '8']]

Merk op hoe NumPy zorgde voor het verschuiven en koppelen van de elementen aan nieuwe rijen.

Wiskundige bewerkingen op items van een array

Het uitvoeren van wiskundige bewerkingen op items van een array is heel eenvoudig. We beginnen met het schrijven van een eenvoudig codefragment om het maximum, het minimum en de toevoeging van alle items van de array te achterhalen. Hier is het codefragment:

numpy_arr = np.reeks([(1, 2, 3, 4, 5)])
print(numpy_arr.maximaal())
print(numpy_arr.min())
print(numpy_arr.som())
print(numpy_arr.gemeen())
print(np.sqrt(numpy_arr))
print(np.std(numpy_arr))

In de laatste 2 bewerkingen hierboven hebben we ook de vierkantswortel en standaarddeviatie van elk matrixitem berekend calculated. Het bovenstaande fragment levert de volgende uitvoer op:

5
1
15
3.0
[[1.   1.41421356   1.73205081   2.   2.23606798]]
1.4142135623730951

Python-lijsten converteren naar NumPy-arrays

Zelfs als je Python-lijsten in je bestaande programma's hebt gebruikt en je wilt niet al die code veranderen, maar toch gebruik wilt maken van NumPy-arrays in je nieuwe code, is het goed om te weten dat we een Python gemakkelijk kunnen converteren lijst naar een NumPy-array. Hier is een voorbeeld:

# Maak 2 nieuwe lijsten voor lengte en gewicht
hoogte = [2.37,  2.87, 1.52, 1.51, 1.70, 2.05]
gewicht = [91.65, 97.52, 68.25, 88.98, 86.18, 88.45]
# Maak 2 numpy-arrays van lengte en gewicht
np_height = np.array (hoogte)
np_gewicht = np.reeks (gewicht)

Om dit te controleren, kunnen we nu het type van een van de variabelen afdrukken:

print(type(np_height))

En dit zal laten zien:

We kunnen nu een wiskundige bewerking over alle items tegelijk uitvoeren. Laten we eens kijken hoe we de BMI van de mensen kunnen berekenen:

# Bereken bmi
bmi = np_gewicht / np_height ** 2
# Print het resultaat
afdrukken (bmi)

Dit toont de BMI van alle mensen die elementsgewijs zijn berekend:

[16.31682957 11.8394056 29.54033934 39.02460418 29.8200692 21.04699584]

Is dat niet makkelijk en handig? We kunnen zelfs eenvoudig gegevens filteren met een voorwaarde in plaats van een index tussen vierkante haken:

bmi[bmi > 25]

Dit geeft:

reeks([29.54033934, 39.02460418, 29.8200692 ])

Creëer willekeurige reeksen en herhalingen met NumPy

Met veel functies in NumPy om willekeurige gegevens te creëren en deze in een vereiste vorm te rangschikken, worden NumPy-arrays vaak gebruikt bij het genereren van testgegevenssets op veel plaatsen, inclusief foutopsporing en testdoeleinden. Als u bijvoorbeeld een array van 0 tot n wilt maken, kunnen we de arange gebruiken (let op de enkele 'r') zoals het gegeven fragment:

print(np.bereik(5))

Dit retourneert de uitvoer als:

[0 1 2 3 4]

Dezelfde functie kan worden gebruikt om een ​​lagere waarde op te geven, zodat de array begint met andere getallen dan 0:

print(np.bereik(4, 12))

Dit retourneert de uitvoer als:

[ 4  5  6  7  8  9 10 11]

De nummers hoeven niet continu te zijn, ze kunnen een fix-stap overslaan zoals:

print(np.bereik(4, 14, 2))

Dit retourneert de uitvoer als:

[ 4 6 8 10 12]

We kunnen de getallen ook in afnemende volgorde krijgen met een negatieve skip-waarde:

print(np.bereik(14, 4, -1))

Dit retourneert de uitvoer als:

[14 13 12 11 10 9 8 7 6 5]

Het is mogelijk om n getallen tussen x en y met gelijke ruimte te financieren met de linspace-methode, hier is het codefragment voor hetzelfde:

np.linspace(start=10, stop=70, aantal=10, dtype=int)

Dit retourneert de uitvoer als:

reeks([10, 16, 23, 30, 36, 43, 50, 56, 63, 70])

Houd er rekening mee dat de uitvoeritems niet gelijk verdeeld zijn. NumPy doet zijn best om dit te doen, maar je hoeft er niet op te vertrouwen omdat het de afronding doet.

Laten we ten slotte eens kijken hoe we een reeks willekeurige reeksen kunnen genereren met NumPy, een van de meest gebruikte functies voor testdoeleinden. We zullen een reeks getallen doorgeven aan NumPy die zal worden gebruikt als een begin- en eindpunt voor de willekeurige getallen:

print(np.willekeurig.randint(0, 10, grootte=[2,2]))

Het bovenstaande fragment creëert een 2 bij 2 dimensionale NumPy-array die willekeurige getallen tussen 0 en 10 zal bevatten. Hier is de voorbeelduitvoer:

[[0 4]
[8 3]]

Let op: aangezien de getallen willekeurig zijn, kan de uitvoer zelfs verschillen tussen de 2 runs op dezelfde machine.

Conclusie

In deze les hebben we gekeken naar verschillende aspecten van deze computerbibliotheek die we met Python kunnen gebruiken om zowel eenvoudige als complexe wiskundige problemen te berekenen die zich in verschillende gebruikssituaties kunnen voordoen. De NumPy is een van de belangrijkste rekenbibliotheken als het gaat om data-engineering en het berekenen van numerieke gegevens, absoluut een vaardigheid die we onder onze riem moeten hebben.

Deel uw feedback over de les op Twitter met @sbmaggarwal en @LinuxHint.

Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...
Hoe FPS-teller in Linux-games te tonen
Linux-gaming kreeg een grote duw toen Valve in 2012 Linux-ondersteuning voor Steam-client en hun games aankondigde. Sindsdien hebben veel AAA- en indi...
Sid Meier's Civilization VI downloaden en spelen op Linux and
Inleiding tot het spel Civilization 6 is een moderne versie van het klassieke concept dat werd geïntroduceerd in de serie Age of Empires-games. Het id...