Tento tutoriál vám ukáže, jak používat funkci NumPy max, kterou v kódu Pythonu uvidíte jako np.max.

Na vysoké úrovni vám chci funkci vysvětlit a ukázat, jak funguje. Vzhledem k tomu jsou v tomto tutoriálu dvě základní části: syntaxe funkce NumPy max a příklady použití funkce NumPy max.

Pokud s NumPy teprve začínáte, doporučuji přečíst celý tutoriál od začátku do konce. Přitom, pokud chcete jen získat rychlou odpověď na nějakou otázku, můžete přeskočit na příslušnou část pomocí jednoho z následujících odkazů:

  • Syntaxe NumPy max
  • Příklady, jak používat NumPy max

Ok. S tím vším na paměti začněme.

Nejprve si povíme něco o NumPy a funkci NumPy max.

Krátký úvod do funkce NumPy max

Je vám asi jasné, že funkce NumPy max je funkce v modulu NumPy.

Jestliže jste ale opravdový začátečník, možná ani pořádně nevíte, co to NumPy je. Než si tedy řekneme něco konkrétně o funkci np.max, pojďme si v rychlosti povědět něco o NumPy.

Co přesně je NumPy?

Numpy je modul pro manipulaci s daty v jazyce Python

Jestliže se zajímáte o datovou vědu v jazyce Python, je NumPy velmi důležitý. Je to proto, že velká část práce v oblasti datové vědy spočívá jednoduše v manipulaci s daty. Ať už děláte hluboké učení nebo analýzu dat, obrovské množství práce v datové vědě je právě čištění dat, příprava dat a jejich zkoumání, abyste se ujistili, že jsou v pořádku k použití.

Z důvodu důležitosti manipulace s daty je NumPy opět velmi důležitý pro datovou vědu v Pythonu.

Numpy je sada nástrojů pro práci s číselnými daty

Konkrétně však NumPy poskytuje sadu nástrojů pro práci s číselnými daty.

Python má další sady nástrojů pro práci s nečíselnými daty a daty smíšeného typu (například modul Pandas). Pokud však máte jakýkoli druh číselných dat, která potřebujete vyčistit, upravit, přetvořit nebo analyzovat, NumPy je pravděpodobně sada nástrojů, kterou potřebujete.

Ačkoli funkce NumPy mohou pracovat s různými datovými strukturami, jsou vytvořeny pro práci se strukturou zvanou pole NumPy. Pole NumPy jsou jen speciálním druhem objektu jazyka Python, který obsahuje číselná data. Existuje celá řada způsobů, jak vytvářet pole NumPy, včetně funkce np.array, funkce np.ones, funkce np.zero a funkce np.arange, spolu s mnoha dalšími funkcemi, kterými jsme se zabývali v minulých výukových kurzech zde na Sharp Sight.

Důležité je, že pole NumPy jsou optimalizována pro numerické výpočty. V NumPy tedy existuje sada nástrojů pro provádění numerických výpočtů na polích NumPy, jako je výpočet průměru pole NumPy, výpočet mediánu pole NumPy a podobně.

V podstatě vám NumPy poskytuje sadu nástrojů pro vytváření polí číselných dat a provádění výpočtů na těchto číselných datech.

Jedním z výpočtů, které můžete provádět, je výpočet maximální hodnoty pole NumPy. K tomu slouží funkce np.max.

NumPy max vypočítá maximální hodnotu hodnot v poli NumPy

Funkce numpy.max() vypočítá maximální hodnotu číselných hodnot obsažených v poli NumPy. Může také vypočítat maximální hodnotu řádků, sloupců nebo jiných os. O tom si povíme v části věnované příkladům.

Syntakticky se s funkcí NumPy max často setkáte v kódu jako np.max. Takto ji uvidíte zapsanou, pokud programátor importoval modul NumPy s aliasem np.

Dodatečně, jen pro upřesnění, byste měli vědět, že funkce np.max je totéž co funkce NumPy amax, alias np.amax. V podstatě je np.max aliasem funkce np.amax. Kromě názvu jsou stejné.

Vysokoúrovňový příklad fungování funkce np.max

Podle tohoto tutoriálu vám ukážu konkrétní příklady použití funkce np.max, ale právě zde vám chci dát hrubou představu o tom, co dělá.

Předpokládejme například, že máte jednorozměrné pole NumPy s pěti hodnotami:

Vizuální příklad pole NumPy, které budeme používat s funkcí NumPy max

Můžeme použít funkci NumPy max k výpočtu maximální hodnoty:

Vizuální znázornění toho, jak funkce NumPy max vypočítá průměr pole NumPy.

Ačkoli tento příklad ukazuje, jak funkce np.max() pracuje na jednorozměrném poli NumPy, podobným způsobem pracuje i na dvourozměrných a vícerozměrných polích. Opět vám ukážu celé příklady v části příkladů tohoto kurzu.

Než se však podíváme na příklady kódu, podívejme se krátce na syntaxi a parametry funkce np.max.

Syntaxe funkce numpy max

Syntaxe funkce np.max je poměrně jednoduchá, i když několik parametrů funkce může být trochu matoucích.

Probereme si zde syntaktickou strukturu funkce a vysvětlím také důležité parametry.

Krátká poznámka

Ještě než začneme probírat syntaxi, jedna krátká poznámka.

Syntakticky je správný název funkce numpy.max().

Přesto se v kódu často setkáte s názvem funkce np.max().

Proč?

Obvykle na začátku programu, který používá modul NumPy, programátoři importují funkci NumPy jako np. V programu se doslova objeví řádek kódu, který zní import numpy as np. Tím se vlastně importuje modul NumPy s aliasem np. Díky tomu může programátor v kódu odkazovat na NumPy jako na np, což mu umožní odkazovat na funkci numpy.max jako na np.max.

Pokud jsme to řekli, podívejme se blíže na syntaxi.

Vysvětlení syntaxe

Na vysoké úrovni je syntaxe np.max je poměrně přímočará.

Je zde název funkce – np.max() – a uvnitř funkce je několik parametrů, které nám umožňují řídit přesné chování funkce.

Vysvětlení syntaxe NumPy max.

Podívejme se blíže na parametry funkce np.max, protože právě parametry umožňují skutečně jemné ovládání funkce.

Parametry funkce np.max

Numpy.max má čtyři základní parametry:

  • a
  • axis
  • out
  • keepdims

Povíme si o každém z těchto parametrů zvlášť.

a (povinný)

Parametr a umožňuje určit data, se kterými bude funkce np.max pracovat. V podstatě určuje vstupní pole funkce.

V mnoha případech bude tímto vstupním polem vlastní pole NumPy. Jak již bylo řečeno, numpy.max (a většina ostatních funkcí NumPy) bude pracovat s jakoukoli „posloupností dat podobnou poli“. To znamená, že argumentem parametru a může být seznam Pythonu, tuple Pythonu nebo jedna z několika dalších posloupností Pythonu.

Mějte na paměti, že tomuto argumentu musíte něco poskytnout. Je povinný.

osy (nepovinné)

Parametr axis umožňuje zadat osu, na které se budou počítat maximální hodnoty.

Zjednodušeně řečeno, parametr osy umožňuje vypočítat řádková maxima a sloupcová maxima.

Podrobněji vysvětlím, jak to udělat, v následující části s příklady, ale dovolte mi, abych v rychlosti vysvětlil, jak parametr axis funguje.

Krátký přehled os polí

Na vysoké úrovni musíte pochopit, že pole NumPy mají osy.

Osy jsou jako směry podél pole NumPy. Ve dvourozměrném poli je osa 0 osa, která směřuje dolů po řádcích, a osa 1 osa, která směřuje vodorovně přes sloupce.

Vizuální vysvětlení os polí NumPy.

Parametr pole určuje osu pro výpočet maxim

Jak to tedy souvisí s parametrem axis?

Když ve funkci numpy.max použijeme parametr axis, určujeme osu, podél které se mají najít maxima.

To nám vlastně umožňuje vypočítat sloupcová a řádková maxima.

Ukážu vám, co mám na mysli.

Pamatujte si, že osa 0 je osa, která směřuje dolů, po řádcích.

Pokud použijeme kód np.max(axis = 0) na poli, efektivně tím říkáme NumPy, aby počítala maximální hodnoty v tomto směru … ve směru osy 0.

Příklad použití np.max s osou = 0.

Ve skutečnosti, když nastavíme axis = 0, určujeme, že chceme vypočítat maxima sloupců.

Podobně si uvědomte, že ve dvourozměrném poli směřuje osa 1 horizontálně. Proto když použijeme NumPy max s axis = 1, říkáme NumPy, aby počítal maxima horizontálně, ve směru osy 1.

Příklad použití np.max s osou = 1.

Tímto způsobem efektivně vypočítáme řádková maxima.

Konkrétní příklady kódu, jak to provést, vám ukážu později v části s příklady.

Mějte na paměti, že parametr osy je nepovinný. Pokud osu nezadáte, NumPy max najde maximální hodnotu v celém poli NumPy.

out (nepovinné)

Parametr out umožňuje zadat speciální výstupní pole, kam můžete uložit výstup np.max.

Tento parametr se běžně nepoužívá (zejména pokud jste začátečník), takže se jím v tomto tutoriálu nebudeme zabývat.

outje nepovinný parametr.

keepdims (nepovinný)

Parametr keepdims je trochu matoucí, takže jeho pochopení bude vyžadovat trochu úsilí.

V konečném důsledku parametr keepdims udržuje rozměry výstupu stejné jako rozměry vstupu.

Abychom pochopili, proč to může být nutné, podívejme se, jak typicky funguje funkce numpy.max.

Při použití np.max na typickém poli NumPy funkce zmenší počet rozměrů. Shrne data.

Příklad řekněme, že máte jednorozměrné pole NumPy. Na toto pole použijete funkci NumPy max.

Pokud použijete np.max na jednorozměrné pole, výstupem bude jediné číslo. Skalární hodnota … nikoli 1-dimenzionální pole.

Vizuální příklad toho, jak np.max shrne 1-dimenzionální pole na jediné číslo, a to výpočtem hodnoty MAX.

V podstatě funkce jako NumPy max (stejně jako numpy.median, numpy.mean atd.) shrnují data a při shrnutí dat tyto funkce vytvářejí výstupy, které mají snížený počet dimenzí.

Někdy však chcete, aby výstup měl stejný počet dimenzí. Někdy se stává, že pokud je vstupem 1-dimenzionální pole, chcete, aby výstupem bylo 1-dimenzionální pole (i když výstupní pole má v sobě jedinou hodnotu).

Toho můžete dosáhnout parametrem keepdims.

Ve výchozím nastavení je keepdims nastaven na False. Ve výchozím nastavení (jak bylo uvedeno výše) tedy nebudou rozměry výstupu stejné jako rozměry vstupu. Ve výchozím nastavení budou rozměry výstupu menší (protože np.max shrnuje data).

Pokud ale nastavíte keepdims = True, výstup bude mít stejné rozměry jako vstup.

Toto je trochu abstraktní bez konkrétního příkladu, proto vám příklad tohoto chování ukážu později v části s příklady.

A vlastně teď, když jsme si prošli parametry, je to dobré místo k tomu, abychom se začali zabývat příklady funkce NumPy max.

Příklady: jak používat funkci NumPy max

V této části vám ukážu konkrétní příklady použití funkce NumPy max.

Ukážu vám několik variant, jak zjistit maximální hodnotu pole. Ukážu vám, jak najít maximální hodnotu jednorozměrného pole, jak najít maximální hodnotu dvourozměrného pole a jak pracovat s několika důležitými parametry funkce numpy.max.

Nejprve spusťte tento kód

Než začneme, je třeba udělat několik předběžných věcí, abyste se správně nastavili.

Především musíte mít na svém počítači správně nainstalovaný NumPy.

Import numpy

Druhé, musíte mít NumPy importovaný do svého pracovního prostředí.

NumPy můžete importovat pomocí následujícího kódu:

import numpy as np

Všimněte si, že jsme NumPy importovali jako np. To znamená, že v našem kódu budeme na NumPy odkazovat pomocí aliasu np.

Ok, a teď, když jsme to dokončili, podívejme se na několik příkladů.

Vypočítejte maximální hodnotu jednorozměrného pole

Začneme jednoduše.

Počítáme maximální hodnotu 1-dimenzionálního pole NumPy.

Pro tento úkol nejprve prostě vytvoříme 1-dimenzionální pole, které bude obsahovat několik náhodných celých čísel. K vytvoření tohoto pole použijeme funkci numpy.random.randint(). Mějte na paměti, že musíte použít funkci np.random.seed(), aby vaše pole NumPy obsahovalo stejná celá čísla jako celá čísla v tomto příkladu.

np.random.seed(22)np_array_1d = np.random.randint(size = 5, low = 0, high = 99)

Tato syntaxe vytvoří 1-dimenzionální pole s názvem np_array_1d.

Můžeme vypsat np_array_1d pomocí funkce print().

print(np_array_1d)

A zde je výstup:


Vizuálně můžeme určit maximální hodnotu, která je 84.

Ale pojďme to udělat pomocí kódu.

Tady vypočítáme maximální hodnotu našeho pole NumPy pomocí funkce np.max().

np.max(np_array_1d)

Která dává následující výstup:

84

Jedná se o extrémně jednoduchý příklad, ale ilustruje tuto techniku. Je zřejmé, že pokud je pole dlouhé pouze 5 položek, můžete vizuálně zkontrolovat pole a zjistit maximální hodnotu. Tato technika však bude fungovat, pokud máte pole s tisíci hodnotami (nebo více!).

Výpočet maxima dvourozměrného pole

Napříště vypočítáme maximum dvourozměrného pole.

K tomu samozřejmě potřebujeme 2-d pole, se kterým budeme pracovat, takže nejprve vytvoříme 2-dimenzionální pole NumPy.

Pro vytvoření našeho 2-d pole použijeme funkci np.random.choice(). Tato funkce v podstatě vylosuje náhodný vzorek z celých čísel mezi 0 a 8, a to bez náhrady. Po provedení funkce np.random.choice() použijeme metodu reshape() k přetvoření celých čísel na dvourozměrné pole o 3 řádcích a 3 sloupcích.

np.random.seed(1)np_array_2d = np.random.choice(9, 9, replace = False).reshape((3,3))

Podíváme se na to vypsáním pole, np_array_2d.

print(np_array_2d)
 ]

Jak vidíte, jedná se o 2dimenzionální pole se 3 řádky a 3 sloupci. Obsahuje celá čísla od 0 do 8, která jsou v poli uspořádána náhodně.

Nyní vypočítáme maximální hodnotu pole:

np.max(np_array_2d)

Címž získáme následující výstup:

8

Znovu připomínám, že se jedná o velmi jednoduchý příklad, ale můžete jej použít pro mnohem větší dvourozměrné pole a bude fungovat stejně. Jakmile se naučíte tuto techniku používat, vyzkoušejte ji s většími poli!“

Napříště uděláme něco složitějšího.

… v dalších příkladech budeme počítat maxima sloupců a maxima řádků.

Výpočet maximální hodnoty sloupců 2-d pole

Nejdříve: budeme počítat maximální hodnoty sloupců pole.

K tomu potřebujeme použít parametr axis. Konkrétně potřebujeme nastavit axis = 0 uvnitř funkce numpy.max.

Rychle si zopakujeme proč.

Parametr axis určuje, kterou osu chceme shrnout

Pamatujte, že pole NumPy mají osy a že osy jsou jako směry podél pole. Ve dvourozměrném poli je osa 0 osa, která směřuje dolů, a osa 1 osa, která směřuje vodorovně.

Vizuální vysvětlení os polí NumPy.

Tyto osy můžeme použít k určení směru, podél kterého chceme použít np.max.

Řekněme tedy, že chceme vypočítat maximální hodnoty sloupců. To je ekvivalentní výpočtu průměrů směrem dolů.

V podstatě, abychom vypočítali maxima sloupců, musíme vypočítat maxima ve směru osy 0.

Vypočítejte max s osou = 0

Ukážu vám, jak na to.

Tady znovu vytvoříme naše dvourozměrné pole NumPy. Je to stejné jako 2-d pole NumPy, které jsme vytvořili v předchozím příkladu, takže pokud jste již tento kód spustili, nemusíte ho spouštět znovu.

np.random.seed(1)np_array_2d = np.random.choice(9, 9, replace = False).reshape((3,3))

A můžeme ho vypsat:

print(np_array_2d)
 ]

Znovu opakuji, že se jedná o 2-d pole se 3 řádky a 3 sloupci. Obsahuje celá čísla od 0 do 8, náhodně uspořádaná v poli.

Nyní vypočítáme maxima sloupců pomocí numpy.max s axis = 0.

# CALCULATE COLUMN MAXIMAnp.max(np_array_2d, axis = 0)

Které dává následující výstupní pole:

array()

Vyhodnoťme, co se zde stalo.

Nastavením axis = 0 jsme určili, že chceme, aby funkce NumPy max počítala maximální hodnoty směrem dolů podél osy 0.

Když nastavíme axis = 0, numpy.max vypočítá maximální hodnoty sloupců.

Je to celkem jednoduché, pokud rozumíte osám NumPy a tomu, jak fungují ve funkcích NumPy.

Výpočet maxima řádku s osou = 1

Podobně můžeme vypočítat maxima řádku nastavením parametru axis na axis = 1.

Tady je opět kód pro vytvoření 2d datové sady:

np.random.seed(1)np_array_2d = np.random.choice(9, 9, replace = False).reshape((3,3))
print(np_array_2d)
 ]

A nyní vypočítáme řádková maxima:

np.max(np_array_2d, axis = 1)

S následujícím výstupem:

array()

Toto by mělo dávat smysl, pokud jste již četli a pochopili předchozí příklady.

Když nastavíme axis = 1, říkáme tím numpy.max, aby počítalo maximální hodnoty ve směru osy 1. V tomto případě se jedná o maximální hodnoty. Protože osa 1 je osa, která probíhá vodorovně podél pole, počítá to vlastně maximální hodnoty podél řádků dvourozměrného pole:

Když nastavíme axis = 1, numpy.max vypočítá maximální hodnoty řádků.

Znovu opakuji, že je to docela jednoduché, pokud opravdu rozumíte osám polí NumPy. Pokud máte s pochopením os stále problémy, doporučuji vám projít si náš tutoriál o osách polí NumPy.

Jak používat parametr keepdims s np.max

Nakonec se podíváme na parametr keepdims.

Než to uděláme, vysvětlím, proč ho potřebujeme.

Jak jsem již dříve poznamenal, funkce NumPy max při svém použití shrnuje data. Ve skutečnosti mnoho funkcí NumPy, které počítají souhrnné statistiky (jako np.mean, np.median, np.min atd.), shrnuje data ze své podstaty. Když počítáte souhrnnou statistiku, z definice shrnujete data.

To má důležité důsledky související s dimenzemi dat.

Když shrnete data pomocí funkce jako numpy.max, výstup funkce bude mít snížený počet dimenzí.

Řekněme například, že počítáte maximální hodnotu dvourozměrného pole. Pokud na toto dvourozměrné pole použijete funkci numpy.max (bez parametru axis), bude výstupem jediné číslo, skalár. Skaláry mají nulové rozměry. Dva rozměry dovnitř, nulový rozměr ven.

Funkce NumPy max efektivně redukuje rozměry mezi vstupem a výstupem.

Někdy však nechcete redukovaný počet rozměrů. Mohou nastat situace, kdy potřebujete, aby výstup měl technicky stejné rozměry jako vstup (i když výstup je jedno číslo).

Toto chování můžete vynutit pomocí parametru keepdims.

Nastavte keepdims na true (a zachovejte stejné rozměry)

Ve výchozím nastavení je parametr keepdims nastaven na False. Jak jsem právě vysvětlil, znamená to, že výstup nemusí mít ve výchozím nastavení stejné rozměry jako vstup.

Pokud ale nastavíte keepdims = True, vynutíte si tím, aby výstup měl stejný počet rozměrů jako vstup.

To by vás mohlo zmást, takže se podíváme na solidní příklad.

Nejprve jen vytvoříme dvourozměrné pole.

Jedná se o stejné pole, které jsme vytvořili dříve, takže pokud jste tento kód již spustili, nemusíte ho spouštět znovu. Tento kód v podstatě vytvoří dvojrozměrné pole s čísly od 0 do 8, náhodně uspořádanými do pole 3 na 3.

np.random.seed(1)np_array_2d = np.random.choice(9, 9, replace = False).reshape((3,3))

Jen pro názornost se na to podíváme vypsáním:

print(np_array_2d)

A zde je pole:

 ]

Toto pole opět obsahuje pouze celá čísla od 0 do 8, náhodně uspořádaná v poli NumPy 3 na 3.

A kolik má rozměrů?

Je vám to asi jasné, ale počet rozměrů můžeme přímo zjistit extrakcí atributu ndim z pole.

np_array_2d.ndim

A to nám říká počet rozměrů:

2

Takže np_array_2d je dvourozměrné pole.

Nyní použijeme np.max k výpočtu maximální hodnoty pole.

np.max(np_array_2d)

Maximální hodnota je 8.

A kolik rozměrů má výstup? To můžeme ověřit odkazem na atribut ndim na konci funkce np.max():

np.max(np_array_2d).ndim

Kolik rozměrů má výstup?

0.

Výstupem funkce np.max je maximální hodnota (8), což je skalár. Tento skalár má nulové rozměry.

Znovu spustíme np.max s keepdims = True

Nyní znovu spustíme kód s keepdims = True.

np.max(np_array_2d, keepdims = True)

Címž získáme následující výstup:

array(])

A zkontrolujme rozměry:

np.max(np_array_2d, keepdims = True).ndim
2

Zde, když spustíme np.max na np_array_2d s keepdims = True, výstup má 2 rozměry.

Zapomeňte, že maximální hodnota je stejná: 8. Jen rozměry výstupu jsou jiné. Nastavením keepdims = True změníme strukturu výstupu … místo skaláru je výstup ve skutečnosti 2dimenzionální pole NumPy s jedinou hodnotou (8).

Pokud se chcete naučit datovou vědu v Pythonu, naučte se NumPy

Pokud jste četli jiné návody zde na blogu Sharp Sight data science, víte, jak důležitá je manipulace s daty.

Pokud to se studiem datové vědy myslíte vážně, musíte opravdu zvládnout základy manipulace s daty. Obrovskou část pracovního postupu v datové vědě tvoří právě čištění a manipulace se vstupními daty.

Pokud pracujete v jazyce Python, jednou ze základních dovedností, kterou pak musíte znát, je NumPy. Numpy je pro čištění, manipulaci a zkoumání dat klíčové.

Pokud se chcete naučit datovou vědu v Pythonu, naučte se NumPy a naučte se ho dobře.

Chcete-li se naučit další výukové programy pro datovou vědu v Pythonu, přihlaste se do našeho e-mailového seznamu

Pokud se chcete naučit NumPy a datovou vědu v Pythonu, přihlaste se do našeho e-mailového seznamu.

Na blogu Sharp Sight pravidelně zveřejňujeme výukové programy pro datovou vědu.

Když se zaregistrujete, získáte zdarma výukové programy na:

  • NumPy
  • Pandas
  • Base Python
  • Scikit learn
  • Machine learning
  • Deep learning
  • … a další.

Když zveřejníme výukové programy, pošleme vám je přímo do schránky.

Chcete se naučit datovou vědu v Pythonu? Zaregistrujte se nyní.

Přihlaste se k odběru výukových programů pro datovou vědu ZDARMA

Chcete-li rychle zvládnout datovou vědu, přihlaste se do našeho e-mailového seznamu.

Pokud se zaregistrujete, budete každý týden ZDARMA dostávat výukové programy o tom, jak dělat datovou vědu v jazycích R a Python.

Zkontrolujte si svou e-mailovou schránku pro potvrzení odběru …

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.