Articles

Python: vectoren, Matrices en Arrays met NumPy

In deze les zullen we een aantal handige tips en trucs bekijken om te spelen met vectoren, matrices en arrays met NumPy library in Python. Deze les is een zeer goed startpunt als je aan de slag gaat met Data Science en een eerste wiskundig overzicht nodig hebt van deze componenten en hoe we ermee kunnen spelen met NumPy in code.

NumPy library stelt ons in staat om verschillende bewerkingen uit te voeren die gedaan moeten worden op datastructuren die vaak gebruikt worden in Machine Learning en Data Science zoals vectoren, matrices en arrays. We zullen alleen de meest voorkomende bewerkingen met NumPy tonen die in veel Machine Learning-pijpleidingen worden gebruikt. Tot slot, houd er rekening mee dat NumPy is gewoon een manier om de bewerkingen uit te voeren, dus, de wiskundige bewerkingen die we laten zien zijn de belangrijkste focus van deze les en niet het NumPy pakket zelf. Laten we beginnen.

Wat is een Vector?

volgens Google is een Vector een grootheid die zowel richting als magnitude heeft, vooral als het bepalen van de positie van een punt in de ruimte ten opzichte van een ander punt.

vectoren zijn erg belangrijk in Machine Learning omdat ze niet alleen de grootte beschrijven, maar ook de richting van de functies. We kunnen een vector in NumPy maken met het volgende codefragment:

importeren numpy als NP
row_vector = np.array ()
print (row_vector)

in het bovenstaande codefragment hebben we een rijvector gemaakt. We kunnen ook een kolomvector aanmaken als:

numpy importeren als NP
col_vector = np.array (,,])
print (col_vector)

een Matrix maken

een matrix kan eenvoudig worden begrepen als een tweedimensionale array. We kunnen een matrix met NumPy maken door een multi-dimensionale array te maken:

matrix = np.array (,,])
print (matrix)

hoewel matrix exact gelijk is aan multidimensionale array, wordt de matrix – gegevensstructuur om twee redenen niet aanbevolen:

  1. de array is de standaard als het gaat om het NumPy pakket
  2. de meeste bewerkingen met NumPy retourneert arrays en niet een matrix

gebruikmakend van een schaarse Matrix

om eraan te herinneren dat een schaarse matrix degene is waarin de meeste items nul zijn. Een veelvoorkomend scenario in data processing en machine learning is het verwerken van matrices waarin de meeste elementen nul zijn. Denk bijvoorbeeld aan een matrix waarvan de rijen elke video op Youtube beschrijven en kolommen elke geregistreerde gebruiker vertegenwoordigen. Elke waarde geeft aan of de gebruiker een video heeft bekeken of niet. Natuurlijk zal de meerderheid van de waarden in deze matrix nul zijn. Het voordeel van sparse matrix is dat het niet de waarden die nul zijn op te slaan. Dit resulteert in een enorm computationeel voordeel en opslagoptimalisatie.

laten we hier een spark matrix maken:

om te begrijpen hoe de code werkt, zullen we hier naar de uitvoer kijken:

in de bovenstaande code hebben we een NumPy-functie gebruikt om een gecomprimeerde sparse rijmatrix te maken waar niet-nul elementen worden weergegeven met behulp van de nul-gebaseerde indexen. Er zijn verschillende soorten schaarse matrix, zoals:

  • gecomprimeerde dunne kolom
  • lijst van lijsten
  • woordenboek van sleutels

We zullen hier niet duiken in andere dunne matrices, maar weten dat elk van hun is-gebruik specifiek is en niemand kan worden aangeduid als ‘beste’.

bewerkingen toepassen op alle vectorelementen

Het is een gemeenschappelijk scenario wanneer we een gemeenschappelijke bewerking moeten toepassen op meerdere vectorelementen. Dit kan worden gedaan door het definiëren van een lambda en dan vectoriseren hetzelfde. Laten we eens een codefragment bekijken voor hetzelfde:

matrix = np.array (,
,
])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vectorize(mul_5)
vectorized_mul_5(matrix)

om te begrijpen hoe de code werkt, zullen we hier naar de uitvoer kijken:

in het bovenstaande codefragment gebruikten we vectorize-functie die deel uitmaakt van de NumPy-bibliotheek, om een eenvoudige lambda-definitie om te zetten in een functie die elk en elk element van de vector. Het is belangrijk op te merken dat vectorize slechts een lus over de elementen is en geen effect heeft op de prestaties van het programma. NumPy staat ook broadcasting toe, wat betekent dat in plaats van de bovenstaande complexe code, we gewoon hadden kunnen doen:

matrix * 5

en het resultaat zou precies hetzelfde zijn geweest. Ik wilde eerst het complexe deel laten zien, anders had je de sectie overgeslagen!

gemiddelde, variantie en standaardafwijking

met NumPy is het eenvoudig om bewerkingen uit te voeren met betrekking tot beschrijvende statistieken over vectoren. Het gemiddelde van een vector kan worden berekend als:

np.gemiddelde (matrix)

variantie van een vector kan worden berekend als:

np.var (matrix)

standaarddeviatie van een vector kan worden berekend als:

np.std (matrix)

De uitvoer van bovenstaande commando ‘ s op de gegeven matrix wordt hier gegeven:

transponeren van een Matrix

transponeren is een veel voorkomende bewerking die u zult horen wanneer u omringd wordt door matrices. Transponeren is gewoon een manier om zuil-en rijwaarden van een matrix te verwisselen. Houd er rekening mee dat een vector niet kan worden getransponeerd als een vector slechts een verzameling van waarden is zonder dat deze waarden worden gecategoriseerd in rijen en kolommen. Houd er rekening mee dat het omzetten van een rijvector naar een kolomvector niet transponeert (gebaseerd op de definities van lineaire algebra, die buiten het bestek van deze les valt).

voorlopig zullen we vrede vinden door een matrix te transponeren. Het is heel eenvoudig om toegang te krijgen tot de transponering van een matrix met NumPy:

matrix.T

De uitvoer van het bovenstaande commando op de gegeven matrix wordt hier gegeven:

dezelfde bewerking kan worden uitgevoerd op een rijvector om deze te converteren naar een kolomvector.

een Matrix afvlakken

We kunnen een matrix omzetten in een eendimensionale array als we de elementen ervan lineair willen verwerken. Dit kan gedaan worden met het volgende codefragment:

matrix.flatten ()

De uitvoer van het bovenstaande commando op de gegeven matrix wordt hier gegeven:

merk op dat de flatten matrix een eendimensionale array is, eenvoudig lineair van aard.

het berekenen van eigenwaarden en eigenvectoren

eigenvectoren worden zeer vaak gebruikt in machine Learning-pakketten. Dus als een lineaire transformatiefunctie wordt gepresenteerd als een matrix, dan zijn X, eigenvectoren de vectoren die alleen veranderen in schaal van de vector, maar niet in de richting ervan. We kunnen zeggen dat:

Xv = yv

Hier is X de vierkante matrix en γ bevat de eigenwaarden. Ook v bevat de eigenvectoren. Met NumPy is het eenvoudig om eigenwaarden en eigenvectoren te berekenen. Hier is het codefragment waar we hetzelfde laten zien:

evalues, evectors = np.linalg.eig (matrix)

De uitvoer van het bovenstaande commando op de gegeven matrix wordt hier gegeven:

Puntproducten van vectoren

Puntproducten van vectoren is een manier om 2 vectoren te vermenigvuldigen. Het vertelt je over hoeveel van de vectoren in dezelfde richting zijn, in tegenstelling tot het kruisproduct dat je het tegenovergestelde vertelt, hoe weinig de vectoren in dezelfde richting zijn (orthogonaal genoemd). We kunnen het dotproduct van twee vectoren berekenen zoals gegeven in het codefragment hier:

a = np.array ()
b = np.array ()
np.dot (a, b)

De uitvoer van het bovenstaande commando op de gegeven arrays wordt hier gegeven:

het optellen, aftrekken en vermenigvuldigen van Matrices

het optellen en aftrekken van meerdere matrices is vrij eenvoudig in matrices. Dat kan op twee manieren. Laten we eens kijken naar het codefragment om deze bewerkingen uit te voeren. Om dit eenvoudig te houden, zullen we dezelfde matrix twee keer gebruiken:

np.add (matrix, matrix)

vervolgens kunnen twee matrices worden afgetrokken als:

np.Aftrekken (matrix, matrix)

De uitvoer van het bovenstaande commando op de gegeven matrix wordt hier gegeven:

zoals verwacht wordt elk element in de matrix toegevoegd/afgetrokken met het overeenkomstige element. Een matrix vermenigvuldigen is vergelijkbaar met het vinden van het dot product zoals we eerder deden:

np.dot (matrix, matrix)

de bovenstaande code zal de ware vermenigvuldigingswaarde van twee matrices vinden, gegeven als:

matrix * matrix

De uitvoer van het bovenstaande commando op de gegeven matrix wordt hier gegeven:

conclusie

in deze les, we gingen door een heleboel wiskundige bewerkingen met betrekking tot vectoren, matrices en arrays die veel worden gebruikt gegevensverwerking, beschrijvende statistieken en Data Science. Dit was een snelle les die alleen de meest voorkomende en belangrijkste delen van de grote verscheidenheid aan Concepten behandelt, maar deze operaties zouden een zeer goed idee moeten geven over wat alle operaties kunnen worden uitgevoerd terwijl het omgaan met deze gegevensstructuren.

deel uw feedback vrijelijk over de les op Twitter met @linuxhint en @sbmaggarwal (dat ben ik!).