Ez a bemutató eredetileg hozzájárult Justin Johnson.
a Python programozási nyelvet fogjuk használni minden feladathoz ebben a kurzusban.A Python önmagában egy nagy általános célú programozási nyelv, de néhány népszerű könyvtár (numpy, scipy, matplotlib) segítségével erőteljeskörnyezet a tudományos számítástechnikához.,
elvárjuk, hogy sok lesz némi tapasztalatom a Python numpy;a többiek, ez a rész szolgál majd egy gyors gyorstalpaló boththe Python programozási nyelv használata a scientificcomputing. Bemutatjuk a notebookokat is, amelyek nagyon kényelmes módjaA Python kóddal való bütykölés. Néhányuknak lehet, hogy korábbi ismeretei vannak adifferent nyelven, ebben az esetben azt is javasoljuk,hogy hivatkozzon:NumPy a Matlab felhasználók számára, Python az R felhasználók számára, és/orPython a SAS felhasználók számára.,
- Listák
- Szótárak
- Beállítja
- a Párok
- Tömbök
- Array indexelés
- Datatypes
- Array matek
- Műsorszolgáltatási
- Numpy Dokumentáció
- Kép műveletek
- MATLAB fájlok
- a pontok közötti Távolság
- Tervezi
- Mellékszál
- Képek
Jupyter, valamint Colab Notebook
Mielőtt belemerülünk a Python, szeretnénk röviden beszélni noteszgépek.,A Jupyter notebook lehetővé teszi, hogy írjon, majd végrehajtjapython kódot helyileg a böngészőben. Jupyter notebookshogy nagyon könnyű bütykölni kód és végre azt bitsand darab; emiatt széles körben használják a scientificcomputing.A Colab viszont a Google által fejlesztett, kifejezetten gépi tanulásra és adatelemzésre alkalmas, teljes egészében a felhőben futó noteszgép.,Colab alapvetően Jupyter notebook szteroidok: ez ingyenes, nem igényel telepítést, jön előtelepített sok csomag, könnyen megosztható a világ, és előnyeit ingyenes hozzáférést biztosít a hardver gyorsítók, mint a GPU és TPU (néhány figyelmeztetés).
futtassa a bemutatót a Colab-ban (ajánlott). Ha ezt a bemutatót teljes egészében a Colab-ban szeretné futtatni, kattintson a Open in Colab
jelvényre az oldal tetején.
futtassa az oktatóprogramot a Jupyter notebookban., Ha a notebookot helyben szeretné futtatni a Jupyter segítségével, ellenőrizze, hogy a virtuális környezet megfelelően van-e telepítve (a telepítési utasítások szerint), aktiválja, majd futtassa a pip install notebook
a Jupyter notebook telepítéséhez. Ezután nyissa meg a notebookot, majd töltse le az Ön által választott könyvtárba, kattintson a jobb gombbal az oldalra, majd válassza a Save Page As
lehetőséget. Ezutáncd
ebbe a könyvtárba futtassa ajupyter notebook
parancsot.
Ez automatikusan elindít egy notebook szervert a címen.,Ha minden helyesen működött, akkor egy ilyen képernyőt kell látnia, amely az összesetrendelkezésre álló Notebookok az aktuális könyvtárban. Kattintson a
jupyter-notebook-tutorial.ipynb
elemre, majd kövesse a jegyzetfüzetben található utasításokat. Ellenkező esetben folytathatja az olvasástutorial az alábbi kódrészletekkel.
Python
a Python egy magas szintű, dinamikusan gépelt többparadigm programozási nyelv.A Python kódról gyakran azt mondják, hogy majdnem olyan, mint a pszeudokód, mivel lehetővé teszihogy nagyon erős ötleteket fejezzen ki nagyon kevés kódsorban, miközben nagyon olvasható., Példaként itt található a klasszikus quicksortalgorithm végrehajtása Python-ban:
Python verziók
2020. január 1-jétől a Python hivatalosan csökkentette a python2
támogatását.Ehhez az osztályhoz az összes kód A Python 3.7-et fogja használni. Győződjön meg róla, hogy átnézte a beállítási utasításokatés helyesen telepítette a python3
virtuális környezetet, mielőtt folytatná ezt a bemutatót.A környezet aktiválása után duplán ellenőrizheti a Python verzióját python --version
futtatásával.,
Alapvető adattípusok
Mint a legtöbb nyelven, Python számos alapvető formája, beleértve a egészek,úszók, booleans, valamint a szálakat. Ezek az adattípusok olyan módon viselkednek, mint amás programozási nyelvekből ismerős.
Számok: Egész számok, s úszik a munka, mint amit elvár egyéb nyelvek:
Megjegyezzük, hogy ellentétben sok nyelven, Piton nem egyoperandusú növekmény (x++
)vagy csökkentése (x--
) szereplők.
Python is beépített típusok komplex számok; megtalálható az összes részletet a dokumentációban.,
Booleans: a Python végrehajtja a logikai logika összes szokásos operátorát, de szimbólumok helyett angol szavakat használ (, ||
stb.):
Strings: Python nagy támogatást húrok:
String objektumok egy csomó hasznos módszerek; például:
megtalálható egy listát az összes string módszerek a dokumentációban.
konténerek
a Python több beépített konténertípust is tartalmaz: listákat, szótárakat, készleteket és tuples-t.,
listák
a lista egy tömb Python-megfelelője, de átméretezhetőés különböző típusú elemeket tartalmazhat:
a szokásos módon megtalálhatja az összes véres részletet a listákróla dokumentációban.
szeletelés:a listaelemek egyenként történő elérése mellett a Python szintaxist biztosít a sublisták eléréséhez; ezt szeletelésnek nevezik:
újra látni fogjuk a szeletelést a numpy tömbök összefüggésében.,
Hurok: a hurok vége az elemek egy lista, mint ez:
animals = for animal in animals: print(animal)# Prints "cat", "dog", "monkey", each on its own line.
Ha el akarsz jutni az index minden elem a szervezetben a hurok,akkor használja a beépített enumerate
beosztása:
Lista comprehensions:Amikor programozás, gyakran szeretnénk átalakítani a típusú adatok a másikba.,Egy egyszerű példaként vegyük a következő kódot, amely kiszámítja tér számok:
nums = squares = for x in nums: squares.append(x ** 2)print(squares) # Prints
lehet, Hogy ez a kód egyszerűbb segítségével egy listát megértés:
nums = squares = print(squares) # Prints
Lista comprehensions is tartalmaz feltételeket:
nums = even_squares = print(even_squares) # Prints ""
Szótárak
A szótár üzletek (kulcs, érték) párok, hasonló egy Map
Java oran tárgy a Javascript használatát., Ezt így használhatja:
mindent megtalál, amit tudnia kell a szótárakróla dokumentációban.
hurkok: könnyen iterálható a szótár kulcsain:
Ha a kulcsokhoz és azok megfelelő értékeihez szeretne hozzáférni, használja a items
method:
Szótármegértések:ezek hasonlóak a listaértésekhez, de lehetővé teszik a könnyen felépíthetődictionaries. Például:
nums = even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}print(even_num_to_square) # Prints "{0: 0, 2: 4, 4: 16}"
készletek
a készlet különálló elemek rendezetlen gyűjteménye., Egyszerű példaként vegye figyelembe a következőt:
mint általában, minden, amit tudni szeretne a készletekről, megtalálhatóa dokumentációban.,
Hurkok:iterációjával egy meghatározott ugyanaz a szintaxis, mint iterációjával egy listát;mivel azonban készletek rendezetlen, nem lehet, hogy a feltételezések arról, hogy a orderin, amely látogassa meg a elemet a beállítás:
animals = {'cat', 'dog', 'fish'}for idx, animal in enumerate(animals): print('#%d: %s' % (idx + 1, animal))# Prints "#1: fish", "#2: dog", "#3: cat"
Set comprehensions:Mint listák, szótárak, könnyedén meg tudjuk építeni a szett segítségével állítsa be comprehensions:
from math import sqrtnums = {int(sqrt(x)) for x in range(30)}print(nums) # Prints "{0, 1, 2, 3, 4, 5}"
Párok
Egy tuple egy (állandó) rendezett lista az értékek.,A tuple sok szempontból hasonlít egy listához; az egyik legfontosabb különbség az, hogy a szótárak kulcsaként és halmazok elemeként is használhatók, míg a listák nem.Itt van egy triviális példa:
a dokumentáció további információkat tartalmaz a csomókról.
Functions
a Python függvények meghatározása a def
kulcsszóval történik. Például:
gyakran definiálunk funkciókat opcionális kulcsszó argumentumok készítéséhez, mint például:
sokkal több információ található a Python funkciókróla dokumentációban.,
osztályok
az osztályok Python-ban történő meghatározásának szintaxisa egyszerű:
a Python osztályokról sokkal többet olvashat a dokumentációban.
Numpy
Numpy az alapvető könyvtár tudományos számítástechnika Python.It egy nagy teljesítményű, többdimenziós tömbobjektumot, valamint eszközöket biztosít a thesearrays használatához. Ha már ismeri a MATLAB-ot, akkor találhatjaez a bemutató hasznos lehet A Numpy használatához.
tömbök
a numpy tömb egy értékrács, mindegyik azonos típusú, és egy nonnegatív egész számok halmaza indexeli., A dimenziók száma a tömb rangja; a tömb alakjaegy tömb egy egész számok halmaza, amely a tömb méretét adja az egyes dimenziók mentén.
inicializálhatjuk a numpy tömböket a beágyazott Python listákból,valamint a hozzáférési elemeket szögletes zárójelekkel:
a Numpy számos funkciót is biztosít tömbök létrehozásához:
a tömb létrehozásának más módszereiről olvashata dokumentációban.
Array indexelés
a Numpy számos módszert kínál a tömbök indexelésére.
szeletelés:a Python listákhoz hasonlóan a numpy tömbök szeletelhetők.,Mivel a tömbök többdimenziósak lehetnek, meg kell adnia egy szeletet a tömb minden méretéhez:
az egész indexelést a szelet indexelésével is keverheti.Ezzel azonban egy sor alacsonyabb rangot eredményez, mint az eredeti tömb.Vegye figyelembe, hogy ez meglehetősen különbözik attól, ahogyan a MATLAB kezeli a tömböket:
egész tömb indexelés:amikor a numpy tömbökbe indexel a szeletelés segítségével, a kapott tömb nézet mindig az eredeti tömb alcsoportja lesz. Ezzel szemben az integer arrayindexing lehetővé teszi tetszőleges tömbök építését egy másikból származó adatok felhasználásával., Itt van egy példa:
egy hasznos trükk egész tömb indexelés kiválasztja vagy mutálja oneelement minden sorban a mátrix:
logikai tömb indexelés: logikai tömb indexelés segítségével kiválaszthatja tetszőleges elemek egy tömb.Gyakran ezt a típusú indexelést használják a tömbök elemeinek kiválasztásáhozamelyek megfelelnek bizonyos feltételeknek. Itt van egy példa:
a rövidség miatt sok részletet kihagytunk a numpy array indexelésről; ha többet szeretne tudni, akkor meg kellolvassa el a dokumentációt.
Datatypes
minden numpy tömb azonos típusú elemek rácsa.,Numpy egy nagy sor numerikus adattípusok, amelyek segítségével építeni tömbök.A Numpy megpróbál kitalálni egy adattípust egy tömb létrehozásakor, de a constructarrays függvényei általában tartalmaznak egy opcionális argumentumot is, amely kifejezetten meghatározza az adattípust.Íme egy példa:
a dokumentációban mindent elolvashat a numpy adattípusokról.,
Array matek
az Alapvető matematikai funkciók működnek elementwise a tömbök, illetve availableboth, mint üzemeltető túlterhelés, illetve olyan funkciókat a numpy modul:
Megjegyezzük, hogy ellentétben a MATLAB, *
elementwise szorzás, nem matrixmultiplication. Ehelyett a dot
függvényt használjuk a vektorok innerproductjainak kiszámításához, egy vektor mátrixszal való szorzásához, valamint a mátrixok szorzásához., dot
mind a numpymodule függvényeként, mind a tömbobjektumok példánymódjaként elérhető:
Numpy számos hasznos funkciót biztosít a számítások elvégzéséhez onarrays; az egyik leghasznosabb a sum
:
a numpy által biztosított matematikai függvények teljes listája.
a matematikai függvények tömbökkel történő kiszámításán kívül gyakran át kell alakítani vagy más módon manipulálni az adatokat a tömbökben., A legegyszerűbb példaaz ilyen típusú művelet egy mátrix átültetése; egy mátrix átültetéséhez egyszerűen használja aT
egy tömbobjektum attribútumát:
Numpy sokkal több funkciót biztosít a tömbök manipulálásához; láthatja a teljes lista dokumentációban.
Broadcasting
Broadcasting egy erős mechanizmus, amely lehetővé teszi numpy dolgozni tömbök különböző shapes végrehajtása során aritmetikai műveleteket. Gyakran van egy kisebb tömb és alarger tömb, és szeretnénk használni a kisebb tömb többször végrehajtani néhány műveletet a nagyobb tömb.,
például tegyük fel, hogy állandó vektort akarunk hozzáadni egy mátrix mindegyikéhez. Így is megtehetjük:
Ez működik; ha azonban a mátrix x
nagyon nagy, akkor egy explicit loopin Python kiszámítása lassú lehet. Vegye figyelembe, hogy hozzátéve, a vector v
, hogy minden egyes sorban a mátrixx
egyenértékű, amely egy mátrix vv
egymásra több példányban v
függőlegesen,akkor teljesítő elementwise összegzése x
vagy vv
., Ezt megvalósíthatjukmegközelítés:
A Numpy broadcasting lehetővé teszi számunkra, hogy ezt a számítást ténylegesen elvégezzük anélkül, hogy a v
több példányát létrehoznánk., Tekintsük ezt a verziót, a műsorszórás:
a vonal y = x + v
működik,bár x
alakja (4, 3)
és v
alakja(3,)
műsorszórás miatt; ez a sor úgy működik, mintha v
valójában alakja (4, 3)
volt, ahol minden sor v
másolata volt, és az összeget elementwise-ben hajtották végre.,
Műsorszolgáltatási két tömbök együtt követi ezeket a szabályokat:
- Ha a tömbök nem azonos értékű, elé a forma az alacsonyabb rangú arraywith 1s, amíg mindkét alakzatok azonos hosszúságú.
- a két tömbök azt mondják, hogy kompatibilis a dimenzió, ha azok azonos méretű a dimenzió, vagy ha az egyik tömbök mérete 1 abban a dimenzióban.
- a tömbök együtt sugározhatók, ha minden dimenzióban kompatibilisek.
- a műsorszórás után minden tömb úgy viselkedik, mintha alakja megegyezik a két bemeneti tömb alakjának elemével.,
- bármely olyan dimenzióban, ahol az egyik tömb mérete 1, a másik tömb mérete 1-nél nagyobb volt,az első tömb úgy viselkedik, mintha a
dimenzió mentén másolták volna, ha ennek a magyarázatnak nincs értelme, próbálja meg elolvasni a magyarázatotvagy ezt a magyarázatot.
a műsorszórást támogató funkciók univerzális funkcióként ismertek. Megtalálhatja az összes univerzális funkció listájáta dokumentációban.,
Íme néhány műsorszórási alkalmazás:
a műsorszórás általában tömörebbé és gyorsabbá teszi a kódot, ezért törekednie kell arra, hogy lehetőség szerint használja.
Numpy dokumentáció
Ez a rövid áttekintés számos fontos dolgot megérintett, amit tudnia kell a numpy-ról, de messze nem teljes. Nézze meg thenumpy referencethogy sokkal többet megtudjon a numpy-ról.
SciPy
Numpy egy nagy teljesítményű többdimenziós tömb és alapvető eszközökkompute ezekkel tömbök és manipulálni.,A SciPybuilds ezzel foglalkozik, és számos olyan funkciót biztosít, amelyek numpy tömbökön működnek, és különböző típusú tudományos és mérnöki alkalmazásokhoz hasznosak.
a SciPy megismerésének legjobb módja a dokumentáció elkészítése.Kiemeljük a SciPy egyes részeit, amelyeket hasznosnak találhat ebben az osztályban.
Képműveletek
a SciPy néhány alapvető funkciót biztosít a képek kezeléséhez.Például funkciókkal rendelkezik a képek lemezről numpy tömbökbe történő olvasására, a numpy tömbök lemezre mint képekre történő írására, valamint a képek átméretezésére.,Itt van egy egyszerű példa, amely bemutatja ezeket a funkciókat:
Matlab fájlok
a funkciók scipy.io.loadmat
és scipy.io.savemat
lehetővé teszi a MATLAB fájlok olvasását és írását. A dokumentációban olvashat róluk.
pontok közötti távolság
a SciPy néhány hasznos funkciót határoz meg a pontkészletek közötti távolság kiszámításához.,
ascipy.spatial.distance.pdist
függvény kiszámítja az összes párpont közötti távolságot egy adott készletben:
a funkció minden részletét elolvashatjaa dokumentációban.
egy hasonló függvény (scipy.spatial.distance.cdist
) kiszámítja az összes pár közötti távolságot. kereszt két pontkészlet között; az itin-ről olvashata dokumentációban.
Matplotlib
Matplotlib is a plotting library.In ez a szakasz röviden bemutatja a matplotlib.pyplot
modult,amely a MATLABHOZ hasonló ábrázolási rendszert biztosít.,
Plotting
a matplotlib legfontosabb funkciója a plot
, amely lehetővé teszi a 2D adatok ábrázolását. Itt egy egyszerű példa:
Fut a kód termel a következő telek:
csak egy kis extra munka könnyen telek több linesat egyszer, majd adjunk meg egy címet, egy legenda tengely címkék:
lehet olvasni, sokkal inkább arról, hogy a plot
functionin a dokumentációt.,
Subplots
különböző dolgokat ábrázolhat ugyanabban az ábrán a subplot
funkcióval.Itt van egy példa:
sokkal többet olvashat a subplot
funkcióróla dokumentációban.
képek
használhatja aimshow
funkciót a képek megjelenítéséhez. Íme egy példa: