Articles

Python: vektorok, mátrixok és tömbök NumPy

ebben a leckében, akkor nézd meg néhány ügyes tippeket és trükköket játszani vektorok, mátrixok és tömbök segítségével numpy könyvtár Python. Ez a lecke egy nagyon jó kiindulási pont, ha az első lépések az adatok a tudomány és szükség van néhány bevezető matematikai áttekintést ezeket a komponenseket, és hogyan tudunk játszani velük a numpy kódban.

a NumPy könyvtár lehetővé teszi számunkra, hogy különböző műveleteket hajtsunk végre a gépi tanulásban és az Adattudományban gyakran használt adatstruktúrákon, például vektorokon, mátrixokon és tömbökön. Csak a leggyakoribb műveleteket mutatjuk be a NumPy – val, amelyeket sok gépi tanulási csővezetékben használnak. Végül kérjük, vegye figyelembe, hogy a numpy csak a műveletek végrehajtásának egyik módja, tehát az általunk bemutatott matematikai műveletek képezik a lecke fő hangsúlyát, nem pedig maga a NumPy csomag. Lássunk hozzá.

mi az a vektor?

a Google szerint a vektor olyan mennyiség, amelynek iránya és nagysága van, különösen a tér egyik pontjának a másikhoz viszonyított helyzetének meghatározásakor.

a Vektorok nagyon fontosak a gépi tanulásban, mivel nem csak a nagyságot írják le, hanem a jellemzők irányát is. Létrehozhatunk egy vektort a NumPy – ban a következő kódrészlettel:

importálja a numpy-t np-ként
row_vector = np.array ()
print (row_vector)

a fenti kódrészletben létrehoztunk egy sorvektort. Létrehozhatunk egy oszlopvektort is:

import numpy as np
col_vector = np.tömb (,,])
nyomtatás (col_vector)

mátrix készítése

a mátrix egyszerűen kétdimenziós tömbként értelmezhető. Többdimenziós tömb készítésével mátrixot készíthetünk a NumPy-val:

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

bár a mátrix pontosan hasonló a többdimenziós tömbhöz, a mátrix adatstruktúrája két okból nem ajánlott:

  1. a tömb a szabvány, amikor a numpy csomag
  2. a legtöbb műveletek numpy visszatér tömbök és nem egy mátrix

egy gyér mátrix

emlékeztetni, a gyér mátrix az, amelyben a legtöbb elem nulla. Az adatfeldolgozás és a gépi tanulás általános forgatókönyve a mátrixok feldolgozása, amelyekben az elemek többsége nulla. Vegyünk például egy mátrixot, amelynek sorai leírják a Youtube minden videóját, az oszlopok pedig minden regisztrált felhasználót képviselnek. Minden érték azt jelzi, hogy a felhasználó nézett-e videót vagy sem. Természetesen a mátrix értékeinek többsége nulla lesz. A ritka mátrix előnye, hogy nem tárolja a nulla értékeket. Ez óriási számítási előnyt és tárolási optimalizálást eredményez.

hozzunk létre egy spark mátrixot itt:

a kód működésének megértéséhez itt nézzük meg a kimenetet:

a fenti kódban egy numpy függvényt használtunk egy tömörített ritka sormátrix létrehozásához, ahol a nem nulla elemek a nulla alapú indexek segítségével vannak ábrázolva. Különféle ritka mátrixok léteznek, mint például:

  • tömörített ritka oszlop
  • listák listája
  • kulcsok szótára

itt nem merülünk bele más ritka mátrixokba, de tudjuk, hogy mindegyik is használata specifikus, és senki sem nevezhető ‘legjobbnak’.

műveletek alkalmazása minden vektor elemre

Ez egy általános forgatókönyv, amikor közös műveletet kell alkalmaznunk több vektor elemre. Ezt meg lehet tenni egy lambda meghatározásával, majd annak vektorizálásával. Nézzünk meg néhány kódrészletet ugyanarra:

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

ahhoz, hogy megértsük, hogyan működik a kód, akkor nézd meg a kimenet itt:

a fenti kódrészlet, használtuk vectorize függvény, amely része a NumPy könyvtár, hogy átalakítsa egy egyszerű lambda definíció egy függvény, amely képes feldolgozni a vektor minden egyes eleme. Fontos megjegyezni, hogy a vectorize csak egy hurok az elemek felett, és nincs hatással a Program teljesítményére. A numpy lehetővé teszi a műsorszórást is, ami azt jelenti, hogy a fenti komplex kód helyett egyszerűen megtehettük volna:

matrix * 5

és az eredmény pontosan ugyanaz lett volna. Először a komplex részt akartam megmutatni, különben kihagyta volna a részt!

átlag, variancia és szórás

a NumPy segítségével könnyen elvégezhető a vektorok leíró statisztikáival kapcsolatos műveletek. A vektor átlaga a következőképpen számítható ki:

np.átlagos (mátrix)

A vektor varianciája a következőképpen számítható ki:

np.var (mátrix)

egy vektor szórása a következőképpen számítható ki:

np.std (matrix)

a fenti parancsok kimenete az adott mátrixon itt található:

mátrix átültetése

az átültetés nagyon gyakori művelet, amelyről hallani fog, amikor mátrixok veszik körül. Az átültetés csak egy módja a mátrix oszlop-és sorértékeinek cseréjének. Kérjük, vegye figyelembe, hogy egy vektor nem transzponálható, mivel a vektor csak értékek gyűjteménye anélkül, hogy ezeket az értékeket sorokba és oszlopokba sorolnánk. Felhívjuk figyelmét, hogy a sorvektor átalakítása oszlopvektorrá nem transzponál (a lineáris algebra definíciói alapján, amely kívül esik ezen lecke hatókörén).

egyelőre csak egy mátrix átültetésével találunk békét. Nagyon egyszerű elérni a mátrix átültetését a NumPy segítségével:

mátrix.T

itt adjuk meg a fenti parancs kimenetét az adott mátrixon:

ugyanaz a művelet végrehajtható egy sorvektoron, hogy oszlopvektorrá konvertálja.

egy mátrix simítása

egy mátrixot egydimenziós tömbvé alakíthatunk, ha az elemeit lineáris módon kívánjuk feldolgozni. Ezt a következő kódrészlettel lehet elvégezni:

mátrix.flatten ()

a fenti parancs kimenete az adott mátrixon itt található:

vegye figyelembe, hogy a flatten mátrix egydimenziós tömb, egyszerűen lineáris módon.

sajátértékek és sajátvektorok kiszámítása

a Sajátvektorokat nagyon gyakran használják a gépi tanulási csomagokban. Tehát, ha egy lineáris transzformációs függvényt mátrixként mutatunk be, akkor X, a sajátvektorok azok a vektorok, amelyek csak a vektor méretarányában változnak, de nem annak irányában. Azt mondhatjuk, hogy:

Xv = yv

itt X a négyzetmátrix, a sajátértékek pedig a sajátértékeket tartalmazzák. A V tartalmazza a Sajátvektorokat is. A NumPy segítségével könnyű kiszámítani a sajátértékeket és a Sajátvektorokat. Itt van a kódrészlet, ahol ugyanezt mutatjuk be:

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

a fenti parancs kimenete az adott mátrixon itt található:

Vektorok Ponttermékei

a Vektorok Ponttermékei a 2 vektor szorzatának egyik módja. Megmondja, hogy a vektorok mekkora része van ugyanabban az irányban, szemben a kereszttermékkel, amely az ellenkezőjét mondja meg, hogy a vektorok mennyire vannak ugyanabban az irányban (ortogonálisnak nevezik). Két vektor ponttermékét kiszámíthatjuk az itt megadott kódrészlet szerint:

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

a fenti parancs kimenete az adott tömbökön itt található:

mátrixok hozzáadása, kivonása és szorzása

Több mátrix Hozzáadása és kivonása meglehetősen egyszerű művelet a mátrixokban. Ennek két módja van. Nézzük meg a kódrészletet ezeknek a műveleteknek a végrehajtásához. Ennek egyszerűsége érdekében ugyanazt a mátrixot kétszer fogjuk használni:

np.add (mátrix, mátrix)

ezután két mátrix kivonható:

np.kivonás (mátrix, mátrix)

a fenti parancs kimenete az adott mátrixon itt található:

a várakozásoknak megfelelően a mátrix minden elemét hozzáadjuk/kivonjuk a megfelelő elemmel. A mátrix szorzása hasonló a dot termék megtalálásához, mint korábban:

np.dot (mátrix, mátrix)

a fenti kód megtalálja két mátrix valódi szorzási értékét:

matrix * matrix

a fenti parancs kimenete az adott mátrixon itt található:

következtetés

ebben a leckében sok olyan matematikai műveleten mentünk keresztül, amelyek vektorokkal, mátrixokkal és tömbökkel kapcsolatosak, amelyek általánosan használt adatfeldolgozás, leíró statisztika és Adattudomány. Ez egy gyors lecke volt, amely csak a fogalmak széles választékának leggyakoribb és legfontosabb szakaszait fedte le, de ezeknek a műveleteknek nagyon jó ötletet kell adniuk arról, hogy mi az összes művelet elvégezhető ezen adatstruktúrák kezelése közben.

kérjük, ossza meg visszajelzést szabadon a leckét a Twitter @ linuxhint és @sbmaggarwal (ez vagyok én!).