Funkce NumPy Apply

Funkce Numpy Apply



Vestavěná knihovna nabízená Pythonem, známá jako NumPy, nám umožňuje konstruovat vícerozměrná pole, upravovat je a provádět na nich různé aritmetické výpočty. Funkci Apply poskytuje také balíček NumPy. Typický případ použití funkce Apply je podobný scénáři, kdy chceme rozdělit pole a provést některé operace s každým prvkem seznamu, například pokud chceme oddělit každou položku v řádku. V Pythonu samozřejmě víme, že smyčky for jsou pomalé, takže bychom se jim pokud možno rádi vyhnuli. Funkci „použít“ lze použít, pokud chcete provést stejnou operaci na každém řádku nebo sloupci datového rámce. Jinými slovy, dělá to, co chcete s for-loopem, aniž byste museli psát for-loop.

Existují dva způsoby, jak aplikovat jakoukoli funkci na pole v závislosti na podmínce. Můžeme použít funkci „použít přes osu“, což je užitečné, když aplikujeme funkci na každý prvek pole jeden po druhém, a je užitečná pro n-rozměrná pole. Druhá metoda je „použít podél osy“, která se vztahuje na jednorozměrné pole.

Syntax:

Metoda 1: Aplikujte podél osy

nemotorný. použít_podél_osy ( 1d_funkce , osa , arr , *argumenty , **quargy )

V syntaxi máme funkci „numpy.apply“, které předáme pět argumentů. První argument, kterým je „1d_function“, pracuje s jednorozměrným polem, které je vyžadováno. Zatímco druhý argument, „osa“, je ten, na které ose chcete pole rozdělit a použít tuto funkci. Třetím parametrem je „arr“, což je dané pole, na které chceme funkci aplikovat. Zatímco „*args“ a „*kwargs“ jsou další argumenty, které není nutné přidávat.







Příklad 1:

Abychom lépe porozuměli metodám „použít“, provedeme příklad pro kontrolu fungování metod aplikace. V tomto případě provedeme funkci „apply_along_Axis“. Pojďme k našemu prvnímu kroku. Nejprve zahrneme naše knihovny NumPy jako np. A pak vytvoříme pole s názvem „arr“, které obsahuje matici 3×3 s celočíselnými hodnotami, které jsou „8, 1, 7, 4, 3, 9, 5, 2 a 6“. Na dalším řádku vytvoříme proměnnou s názvem „array“, která je zodpovědná za udržení výsledku funkce apply_along_Axis.



Této funkci předáme tři argumenty. První je funkce, kterou chceme na pole aplikovat, v našem případě je to funkce sorted, protože chceme, aby bylo naše pole seřazeno. Poté předáme druhý argument „1“, což znamená, že chceme naše pole rozdělit podél osy=1. Laslty, předáme pole, které se má v tomto případě třídit. Na konci kódu jednoduše vypíšeme obě pole – původní pole i pole výsledné – které se zobrazí pomocí příkazu print().



import nemotorný tak jako např.

arr = např. pole ( [ [ 8 , 1 , 7 ] , [ 4 , 3 , 9 ] , [ 5 , dva , 6 ] ] )

pole = např. použít_podél_osy ( seřazeno , 1 , arr )

tisk ( 'původní pole je:' , arr )

tisk ( 'seřazené pole je:' , pole )





Jak můžeme vidět na následujícím výstupu, zobrazili jsme obě pole. V prvním jsou hodnoty náhodně umístěny v každém řádku matice. Ale ve druhém můžeme vidět seřazené pole. Od té doby, co jsme minuli osu „1“, neseřadila celé pole, ale seřadila jej po řádcích, jak je zobrazeno. Každý řádek je setříděn. První řádek v daném poli je „8, 1 a 7“. V seřazeném poli je první řádek „1, 7 a 8“. Stejně tak je každý řádek seřazen.



Metoda 2: Aplikujte přes osu

nemotorný. apply_over_axes ( func , A , sekery )

V dané syntaxi máme funkci numpy.apply_over_axis, která je zodpovědná za aplikaci funkce na dané ose. Uvnitř funkce apply_over_axis předáme tři argumenty. První je funkce, která má být provedena. Druhým je samotné pole. A poslední je osa, na kterou chceme funkci aplikovat.

Příklad 2:

V následujícím případě provedeme druhou metodu funkce „použít“, ve které vypočítáme součet trojrozměrného pole. Jedna věc, kterou je třeba si zapamatovat, je, že součet dvou polí neznamená, že počítáme celé pole. V některých polích počítáme součet po řádcích, což znamená, že sečteme řádky a získáme z nich jediný prvek.

Pojďme vpřed k našemu kódu. Nejprve importujeme balíček NumPy a poté vytvoříme proměnnou, která obsahuje trojrozměrné pole. V našem případě je proměnná „arr“. Na dalším řádku vytvoříme další proměnnou, která obsahuje výsledné pole funkce apply_over_axis. Proměnnou „arr“ se třemi argumenty přiřadíme funkci apply_over_Axis. Prvním argumentem je vestavěná funkce NumPy pro výpočet součtu, který je np.sum. Druhým parametrem je samotné pole. Třetím argumentem je osa, na které je funkce aplikována, v tomto případě máme osu „[0, 2]“. Na konci kódu provedeme obě pole pomocí příkazu print().

import nemotorný tak jako např.

arr = např. pole ( [ [ [ 6 , 12 , dva ] , [ dva , 9 , 6 ] , [ 18 , 0 , 10 ] ] ,

[ [ 12 , 7 , 14 ] , [ dva , 17 , 18 ] , [ 0 , dvacet jedna , 8 ] ] ] )

pole = např. apply_over_axes ( např. součet , arr , [ 0 , dva ] )

tisk ( 'původní pole je:' , arr )

tisk ( 'součet pole je:' , pole )

Jak ukazuje následující obrázek, vypočítali jsme některá z našich trojrozměrných polí pomocí funkce apply_over_axis. První zobrazené pole je původní pole ve tvaru „2, 3, 3“ a druhé je součet řádků. Součet prvního řádku je „53“, druhý „54“ a poslední „57“.

Závěr

V tomto článku jsme studovali, jak se funkce Apply používá v NumPy a jak můžeme aplikovat různé funkce na pole podél nebo přes osu. Je snadné použít jakoukoli funkci na požadovaný řádek nebo sloupec jejich rozřezáním pomocí metod „použít“, které poskytuje NumPy. Je to efektivní způsob, kdy jej nemusíme aplikovat na celé pole. Doufáme, že tento příspěvek shledáte přínosem, když se naučíte používat metodu aplikace.