Python Numpy Tutorial (s Jupyter a Colab)

Tento návod byl původně přispěl Justin Johnson.

pro všechny úkoly v tomto kurzu použijeme programovací jazyk Python.Python je skvělý univerzální programovací jazyk sám o sobě, ale pomoc několika populárních knihoven (numpy, scipy, matplotlib) se stává výkonnýmprostředí pro vědecké výpočty.,

očekáváme, že mnoho z vás bude mít nějaké zkušenosti s Pythonem a numpy;pro zbytek z vás, tato sekce bude sloužit jako rychlý rychlokurz na pro programovací jazyk Python a jeho využití pro scientificcomputing. Představíme také notebooky, které jsou velmi pohodlným způsobemtrávit s kódem Python. Někteří z vás mohou mít předchozí znalosti v jiné jazyce, v takovém případě doporučujeme také odkazování:NumPy pro Matlab uživatelů,Python pro R uživatelů, a/orPython pro SAS uživatelů.,

  • Seznamy
  • Slovníky
  • Nastaví
  • n-Tic
  • Funkce
  • Přednášky
  • Numpy
    • Pole
    • Pole indexování
    • datové typy
    • Array math
    • Vysílání
    • Numpy Dokumentace
  • SciPy
    • Obrázek operace
    • MATLAB soubory
    • Vzdálenost mezi body
  • Matplotlib
    • Kreslení
    • Subplots
    • Obrázky
  • Jupyter a Colab Notebooky

    předtím, Než jsme se ponořit do Python, rádi bychom se krátce mluvit o notebooky.,Jupyter notebook umožňuje psát a spustitpython kód lokálně ve webovém prohlížeči. Jupyter notebooksmake to velmi snadné pohrát s kódem a provést jej v bitsand kusů; z tohoto důvodu jsou široce používány v scientificcomputing.Colab na druhé straně je příchutí notebooků Google Jupyter, které jsou zvláště vhodné pro obrábění a analýzu dat a které běží zcela v cloudu.,Colab je v podstatě Jupyter notebooku na steroidy: je to zdarma, nevyžaduje žádné nastavení,přichází předinstalovaný s mnoha balíčky, je snadno sdílet s celým světem,a těží z volného přístupu na hardwarové akcelerátory jako Gpu a TPUs (s některými výhradami).

    spusťte výukový program v Colabu (doporučeno). Pokud chcete tento tutoriál spustit úplně v Colabu, klikněte na odznak Open in Colab v horní části této stránky.

    spusťte výukový program v notebooku Jupyter., Pokud budete chtít spustit notebook, lokálně s Jupyter, ujistěte se, že vaše virtuální prostředí je správně nainstalován (viz pokyny k instalaci), aktivovat ji, a pak spustit pip install notebook nainstalovat Jupyter notebooku. Poté otevřete notebook a stáhněte jej do adresáře podle vašeho výběru kliknutím pravým tlačítkem myši na stránku a výběrem Save Page As. Pak cd do tohoto adresáře a spusťte jupyter notebook.

    To by mělo automaticky spustit notebook, server na .,Pokud vše fungovalo správně, měli byste vidět obrazovku, jako je tato, zobrazující všechnydostupné notebooky v aktuálním adresáři. Klikněte na jupyter-notebook-tutorial.ipynba postupujte podle pokynů v notebooku. V opačném případě můžete pokračovat ve čtenítutoriál s úryvky kódu níže.

    Python

    Python je programovací jazyk na vysoké úrovni, dynamicky napsaný multiparadigm.Python kód je často řekl, aby byl téměř jako pseudokódu, protože umožňuje, abyste vyjádřit velmi silné myšlenky v několika málo řádků kódu, přičemž je veryreadable., Jako příklad, zde je implementace klasické quicksortalgorithm v Pythonu:

    Python verze

    v Lednu 1, 2020, Python oficiálně ukončil podporu pro python2.Pro tuto třídu bude veškerý kód používat Python 3.7. Ujistěte se, že jste prošli pokyny pro nastavenía správně nainstalované virtuální prostředí python3 před pokračováním v tomto tutoriálu.Po aktivaci prostředí můžete znovu zkontrolovat verzi Pythonu na příkazovém řádku spuštěním python --version.,

    základní datové typy

    stejně jako většina jazyků má Python řadu základních typů včetně celých čísel, plováků,booleans a řetězců. Tyto datové typy se chovají způsoby, které jsouznámý z jiných programovacích jazyků.

    Čísla: Celá čísla a plave fungovat, jak byste očekávali od jiných jazycích:

    Všimněte si, že na rozdíl od mnoha jazyky, Python nemá unární přírůstek (x++)nebo sníží (x--) operátory.

    Python má také vestavěné typy pro složitá čísla;všechny podrobnosti najdete v dokumentaci.,

    Boolean: Python implementuje všechny obvyklé operátory pro Booleovské logiky,ale používá anglická slova, spíše než symboly (&& ||, atd.):

    Struny: Python má velkou podporu pro řetězce:

    String objekty mají spoustu užitečných metod; například:

    zde najdete seznam string metody v dokumentaci.

    kontejnery

    Python obsahuje několik vestavěných typů kontejnerů: seznamy, slovníky, sady a tuply.,

    Seznamy

    seznam je Python ekvivalent pole, ale je resizeableand může obsahovat prvky různých typů:

    Jako obvykle, můžete najít všechny detaily o listsin dokumentace.

    Krájení:kromě přístupu k seznamu prvků, jeden v době, Python providesconcise syntaxe pro přístup k sublists; toto je známé jako krájení:

    My uvidíme, krájení opět v souvislosti s numpy pole.,

    Smyčky: můžete smyčku přes prvky seznamu, jako je tato:

    animals = for animal in animals: print(animal)# Prints "cat", "dog", "monkey", each on its own line.

    Pokud chcete přístup k indexu každého prvku v těle smyčky,použít vestavěný-v enumerate funkce:

    Seznam comprehensions:Při programování, často chceme transformovat jednoho typu dat do jiného.,Jako jednoduchý příklad, zvažte následující kód, který vypočítá mocniny:

    nums = squares = for x in nums: squares.append(x ** 2)print(squares) # Prints 

    můžete Si tento kód jednodušší použití seznamu s porozuměním:

    nums = squares = print(squares) # Prints 

    Seznam comprehensions může také obsahovat podmínky:

    nums = even_squares = print(even_squares) # Prints ""

    Slovníky

    slovník obchodech (klíč, hodnota) páry, podobně jako Map v Java oran objektu v Javascriptu., Můžete jej použít takto:

    najdete vše, co potřebujete vědět o slovníkechv dokumentaci.

    Smyčky: To je jednoduché iteraci přes klíče ve slovníku:

    Pokud chcete přístup k klíče a jejich odpovídající hodnoty, použijte items metoda:

    Dictionary comprehensions:Tyto jsou podobné jako list comprehensions, ale umožní snadno constructdictionaries. Například:

    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}"

    Nastaví

    sada je neuspořádané kolekce odlišné prvky., Jako jednoduchý příklad, celou tuhle nemocnici! následující:

    Jako obvykle, vše, co chcete vědět o sady mohou být otcové dokumentace.,

    Smyčky:Iterace sada má stejnou syntaxi jako iterace seznamu;nicméně od množiny jsou neuspořádané, nelze učinit předpoklady o orderin, které navštívíte prvky sada:

    animals = {'cat', 'dog', 'fish'}for idx, animal in enumerate(animals): print('#%d: %s' % (idx + 1, animal))# Prints "#1: fish", "#2: dog", "#3: cat"

    Nastavte comprehensions:Jako seznamy a slovníky, můžeme snadno sestrojit pomocí sady sada comprehensions:

    from math import sqrtnums = {int(sqrt(x)) for x in range(30)}print(nums) # Prints "{0, 1, 2, 3, 4, 5}"

    n-Tic

    n-tice je (neměnné) uspořádaný seznam hodnot.,N-tice je v mnoha ohledech podobný seznam; jedním z nejdůležitějších rozdílů je thattuples mohou být použity jako klíče ve slovnících a jako prvky množiny, zatímco seznamy nemohou.Zde je triviální příklad:

    dokumentace obsahuje více informací o tuplech.

    Funkce

    Python funkce jsou definovány pomocí def klíčové slovo. Například:

    často definujeme funkce, které budou mít volitelné argumenty klíčových slov, například:

    v dokumentaci je mnohem více informací o funkcích Pythonu.,

    třídy

    syntaxe pro definování tříd v Pythonu je přímočará:

    v dokumentaci si můžete přečíst mnohem více o třídách Pythonu.

    Numpy

    Numpy je základní knihovny pro vědecké výpočty v Pythonu.Poskytuje vysoký výkon multidimenzionální pole objektu, a nástroje pro práci s thesearrays. Pokud jste již obeznámeni s MATLAB, můžete najíttento tutoriál užitečný pro začátek s Numpy.

    Pole

    numpy pole je mřížka hodnoty, všechny stejného typu, a je indexované n-tice ofnonnegative celá čísla., Počet rozměrů je hodnost pole; tvar pole je Tice celých čísel, která udává velikost pole podél každé dimenze.

    můžeme inicializovat pole numpy z vnořených seznamů Pythonu a přístupové prvky pomocí hranatých závorek:

    Numpy také poskytuje mnoho funkcí pro vytváření polí:

    v dokumentaci si můžete přečíst další metody vytváření polí.

    indexování pole

    Numpy nabízí několik způsobů indexování do polí.

    krájení: podobně jako Python seznamy, numpy pole mohou být plátky.,Protože pole může být vícerozměrné, musíte zadat kousek pro každou dimensionof pole:

    můžete také smíchat číslo indexování s plátkem indexování.Tím však získáte řadu nižších hodností než původní pole.Všimněte si, že toto je zcela odlišné od toho, co MATLAB zpracovává arrayslicing:

    Číslo pole indexování:Když si index do numpy pole pomocí krájení, výsledné pole viewwill vždy být pole původního pole. Naproti tomu celočíselné arrayindexing umožňuje vytvářet libovolná pole pomocí dat z jinéhoarray., Zde je příklad:

    Jeden užitečný trik s celočíselné pole indexování je výběr nebo mutující oneelement z každého řádku matice:

    Boolean pole indexování:Boolean pole indexování umožňuje vybrat libovolné prvky pole.Tento typ indexování se často používá k výběru prvků pole, které splňují určitou podmínku. Zde je příklad:

    pro stručnost jsme vynechali mnoho podrobností o indexování pole numpy; pokud se chcete dozvědět více, měli byste si přečíst dokumentaci.

    datové typy

    každé pole numpy je mřížka prvků stejného typu.,Numpy poskytuje velkou sadu číselných datových typů, které můžete použít k vytvoření polí.Numpy se snaží uhodnout datový typ při vytváření pole, ale funkce, které constructarrays obvykle také obsahují volitelný argument explicitně specifikovat datatype.Zde je příklad:

    v dokumentaci si můžete přečíst vše o datových typech numpy.,

    Array math

    Základní matematické funkce pracují elementwise na pole, a jsou availableboth jako provozovatel přetížení a jako funkce v numpy modulu:

    Všimněte si, že na rozdíl od prostředí MATLAB, * je elementwise násobení, ne matic při násobení. Místo toho používáme funkci dot k výpočtu innerproduktů vektorů, k násobení vektoru maticí a matic., dot je k dispozici jako funkce v numpymodule a jako metoda instance pole objekty:

    Numpy nabízí mnoho užitečných funkcí pro provádění výpočtů onarrays; jedním z nejvíce užitečné, je sum:

    můžete najít úplný seznam matematických funkcí poskytovaných numpyin dokumentace.

    kromě výpočetních matematických funkcí pomocí polí často potřebujeme přetvořit nebo jinak manipulovat s daty v polích., Nejjednodušší partner tento typ operace je transpozice matice; transpozice matice,stačí použít T atribut pole, objekt:

    Numpy nabízí mnoho dalších funkcí pro manipulaci s pole; – můžete vidět úplný listin dokumentace.

    Broadcasting

    Broadcasting je výkonný mechanismus, který umožňuje numpy pracovat s poli differentshapes při provádění aritmetických operací. Často máme menší pole a alarger pole, a chceme použít menší pole vícekrát provést některé operacena větším poli.,

    například předpokládejme, že chceme do každého z nich přidat konstantní vektor. Mohli bychom to udělat takto:

    To funguje; nicméně, když matice x je velmi velký, výpočetní explicitní zacyklení Python může být pomalé. Všimněte si, že přidáním vektoru v každý řádek maticex je ekvivalentní k vytvoření matice vv stohování více kopií v svisle,pak se provádí elementwise shrnutí x vv., Jsme mohli realizovat tento, jako je tento:

    Numpy vysílání nám umožňuje provést tento výpočet bez actuallycreating více kopií v., Zvažte tuto verzi, pomocí vysílání:

    Na řádek y = x + v funguje, i když x má tvar (4, 3) v má tvar(3,) vzhledem k vysílání; tato linka funguje jako v vlastně měl tvar (4, 3),kde každá řada byla kopie v a součet byl proveden elementwise.,

    Vysílání dvou matic spolu se řídí těmito pravidly:

    1. Pokud pole nemají stejné hodnoty, předřadit tvar nižší hodnost arraywith 1s, dokud oba tvary mají stejnou délku.
    2. obě pole jsou prý kompatibilní v dimenzi, pokud mají stejnou velikost v dimenzi, nebo pokud má jedno z polí Velikost 1 v této dimenzi.
    3. pole mohou být vysílána společně, pokud jsou kompatibilní ve všech rozměrech.
    4. po vysílání se každé pole chová, jako by mělo tvar rovnající se elementwisemaximu tvarů dvou vstupních polí.,
    5. V nějaké dimenzi, kde jedno pole měl velikost 1 a ostatní pole mělo velikost větší než 1,první pole se chová, jako kdyby to byly zkopírovány spolu, že rozměr

    Pokud je toto vysvětlení nedává smysl, zkuste čtení explanationfrom na documentationor toto vysvětlení.funkce

    podporující vysílání jsou známé jako univerzální funkce. Můžete najítseznam všech univerzálních funkcív dokumentaci.,

    Zde jsou některé aplikace vysílání:

    Vysílání obvykle dělá váš kód stručnější a rychlejší, takže měli snažit používat ho tam, kde je to možné.

    numpy Documentation

    tento stručný přehled se dotkl mnoha důležitých věcí, které potřebujete vědět o numpy, ale zdaleka není úplný. Podívejte se na další informace o numpy.

    SciPy

    Numpy poskytuje vysoce výkonné multidimenzionální pole a základní nástroje propočítat a manipulovat s těmito poli.,SciPybuilds na to, a poskytujevelké množství funkcí, které pracují na numpy polích a jsou užitečné prorůzné typy vědeckých a inženýrských aplikací.

    nejlepší způsob, jak se seznámit s SciPy je tobrowse dokumentaci.Zvýrazníme některé části SciPy, které byste pro tuto třídu mohli najít užitečné.

    operace s obrázky

    SciPy poskytuje některé základní funkce pro práci s obrázky.Má například funkce pro čtení obrázků z disku do polí numpy,zápis polí numpy na disk jako obrázky a změnu velikosti obrázků.,Zde je jednoduchý příklad, který předvádí tyto funkce:

    Vlevo: původní snímek. Vpravo: tónovaný a změněný obraz.

    MATLAB soubory

    funkce scipy.io.loadmat scipy.io.savemat umožní vám číst a napsat MATLAB soubory. Můžete si o nich přečíst v dokumentaci.

    vzdálenost mezi body

    SciPy definuje některé užitečné funkce pro výpočet vzdáleností mezi množinami bodů.,

    funkce scipy.spatial.distance.pdist vypočítá vzdálenost mezi všechny pairsof body v dané množině:

    můžete Si přečíst všechny podrobnosti o této functionin dokumentace.

    podobná funkce (scipy.spatial.distance.cdist) vypočítá vzdálenost mezi všemi páryacross dvě sady bodů; o tom si můžete přečíst v dokumentaci.

    Matplotlib

    Matplotlib je vykreslování knihovna.V této části podat stručný úvod do matplotlib.pyplot modul,který poskytuje vykreslování systém podobný systému MATLAB.,

    Vykreslování

    nejdůležitější funkce v matplotlib je plot,který umožňuje vykreslit 2D data. Zde je jednoduchý příklad:

    tento kód vytvoří následující graf:

    S jen trochu práce navíc můžeme snadno vykreslit více linesat jednou, a přidat název, legenda, popisky os:

    můžete Si přečíst mnohem více o plot functionin dokumentace.,

    Subplots

    pomocí funkce subplot můžete vykreslit různé věci na stejném obrázku.Zde je příklad:

    můžete Si přečíst mnohem více o subplot functionin dokumentace.

    obrázky

    pro zobrazení obrázků můžete použít funkci imshow. Zde je příklad:

    Share

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *