logo

NumPy Array v Pythonu

Seznamy Pythonu jsou náhradou za pole, ale nedosahují požadovaného výkonu při výpočtu velkých sad číselných dat.

K vyřešení tohoto problému používáme Knihovna NumPy z Pythonu. NumPy nabízí objekt pole s názvem ndarray . Jsou podobné standardním sekvencím Pythonu, ale liší se v určitých klíčových faktorech.



Co je to NumPy Array?

Pole NumPy je vícerozměrná datová struktura, která je jádrem vědeckého počítání v Pythonu.

Všechny hodnoty v poli jsou homogenní (stejného datového typu).

Nabízejí automatickou vektorizaci a vysílání.



Poskytují efektivní správu paměti, ufuncs (univerzální funkce), podporují různé typy dat a jsou flexibilní s indexováním a dělením.

Rozměry v polích

Pole NumPy mohou mít více rozměrů, což uživatelům umožňuje ukládat data ve vícevrstvých strukturách.

Rozměry pole:



název Příklad
0D (nulový rozměr) Skalární – jeden prvek
1D (jednorozměrný) Vektor- Seznam celých čísel.
2D (dvourozměrný) Matrix – tabulka dat
3D (trojrozměrný) Tensor - Ukládání barevného obrázku

Vytvořit objekt Array

Objekty pole NumPy nám umožňují pracovat s poli v Pythonu. Je volán objekt pole ndarray .

Funkce array() knihovny NumPy vytvoří ndarray.

Python3




úplný obvod sčítačky
import> numpy as np> arr>=> np.array([>1>,>2>,>3>,>4>,>5>,>6>])>

>

>

Výstup

[1,2,3,4,5,6]>

Můžeme také vytvořit pole NumPy pomocí List a Tuple.

Vytvořte pole NumPy ze seznamu

Alias ​​np můžete použít k vytvoření ndarray z a seznam pomocí metody array().

li = [1,2,3,4] numpyArr = np.array(li)>

nebo

numpyArr = np.array([1,2,3,4])>

Seznam je předán metodě array(), která pak vrátí pole se stejnými prvky.

dva na jeden multiplexer

Příklad 1: Následující příklad ukazuje, jak inicializovat pole ze seznamu.

Python3




wumpus svět

import> numpy as np> > li>=> [>1>,>2>,>3>,>4>]> numpyArr>=> np.array(li)> print>(numpyArr)>

>

>

Výstup:

[1 2 3 4]>

Výsledné pole vypadá stejně jako seznam, ale je to objekt NumPy.

Příklad 2: Vezměme si příklad, abychom zkontrolovali, zda je numpyArr objektem NumPy nebo ne. V tomto příkladu používáme funkci array() k převodu seznamu na pole NumPy a poté zkontrolujeme, zda se jedná o objekt NumPy nebo ne.

Python3




import> numpy as np> > li>=> [>1>,>2>,>3>,>4>]> numpyArr>=> np.array(li)> > print>(>'li ='>, li,>'and type(li) ='>,>type>(li))> print>(>'numpyArr ='>, numpyArr,>'and type(numpyArr) ='>,>type>(numpyArr))>

>

>

Výstup:

li = [1, 2, 3, 4] and type(li) = numpyArr = [1 2 3 4] and type(numpyArr) =>

Jak můžete vidět, li je objekt seznamu, zatímco numpyArr je objekt pole NumPy.

Vytvořte NumPy Array z Tuple

Můžete vytvořit ndarray z a tuple pomocí podobné syntaxe.

tup = (1,2,3,4) numpyArr = np.array(tup)>

nebo

numpyArr = np.array((1,2,3,4))>

Následující příklad ukazuje, jak vytvořit pole z n-tice. Zde používáme funkci array() k převodu n-tice na pole NumPy.

Python3


římská číslice 1 až 100



import> numpy as np> > tup>=> (>1>,>2>,>3>,>4>)> numpyArr>=> np.array(tup)> > print>(>'tup ='>, tup,>'and type(tup) ='>,>type>(tup))> print>(>'numpyArr ='>, numpyArr,>'and type(numpyArr) ='>,>type>(numpyArr))>

jejda
>

>

Výstup:

tup = (1, 2, 3, 4) and type(tup) = numpyArr = [1 2 3 4] and type(numpyArr) =>

Všimněte si, že hodnota numpyArr zůstává stejná pro obě konverze.

NumPy Arrays vs vestavěné Python sekvence

  • Na rozdíl od seznamů mají pole pevnou velikost a změna velikosti pole povede k vytvoření nového pole, zatímco původní pole bude smazáno.
  • Všechny prvky v poli jsou stejného typu.
  • Pole jsou rychlejší, efektivnější a vyžadují méně syntaxe než standardní sekvence Pythonu.

Poznámka: Numpy používají různé vědecké a matematické balíčky založené na Pythonu. Mohou brát vstup jako vestavěnou sekvenci Pythonu, ale pravděpodobně převedou data do pole NumPy, aby dosáhli rychlejšího zpracování. To vysvětluje potřebu porozumět NumPy.

Proč je Numpy Array tak rychlé?

Numpy pole jsou zapsána většinou v jazyk C . Pole jsou napsána v C a jsou uložena v souvislých paměťových místech, což je činí přístupnými a snadněji se s nimi manipuluje. To znamená, že můžete získat úroveň výkonu kódu C s jednoduchým psaním programu Python.

  1. Homogenní data: Pole ukládají prvky stejného datového typu, díky čemuž jsou kompaktnější a paměťově efektivnější než seznamy.
  2. Pevný typ dat: Pole mají pevný datový typ, což snižuje režii paměti tím, že eliminuje potřebu ukládat informace o typu pro každý prvek.
  3. Souvislá paměť: Pole ukládají prvky do sousedních paměťových míst, čímž snižují fragmentaci a umožňují efektivní přístup.
numpyarray

Alokace paměti Numpy Array

Pokud ve svém systému nemáte nainstalovaný NumPy, můžete tak učinit podle následujících kroků. Po instalaci NumPy jej můžete importovat do svého programu takto

import numpy as np>

Poznámka: Zde je np běžně používaný alias pro NumPy.

Alokace dat v Numpy Array

V NumPy jsou data alokována souvisle v paměti podle dobře definovaného rozložení sestávajícího z datové vyrovnávací paměti, tvaru a kroků. To je nezbytné pro efektivní přístup k datům, vektorizované operace a kompatibilitu s nízkoúrovňovými knihovnami, jako jsou BLAS a LAPACK .

  1. Vyrovnávací paměť dat: Datová vyrovnávací paměť v NumPy je jeden plochý blok paměti, který ukládá skutečné prvky pole bez ohledu na jeho rozměr. To umožňuje efektivní operace po jednotlivých prvcích a přístup k datům.
  2. Tvar: Tvar pole je n-tice celých čísel, která představuje rozměry podél každé osy. Každé celé číslo odpovídá velikosti pole podél určité dimenze, která definuje počet prvků podél každé osy a je nezbytná pro správné indexování a přetvoření pole.
  3. Kroky: Kroky jsou n-tice celých čísel, které definují počet bajtů pro krok v každé dimenzi při přechodu z jednoho prvku na druhý. Určují rozestupy mezi prvky v paměti a měří, kolik bajtů je potřeba k přesunu z jednoho prvku do druhého v každé dimenzi.

2

Závěr

NumPy pole v Pythonu je velmi užitečná datová struktura a umožňuje nám s daty provádět různé vědecké operace. Jedná se o velmi paměťově efektivní datovou strukturu a nabízí širokou škálu výhod oproti jiným Pythonovým sekvencím.

V tomto tutoriálu jsme podrobně vysvětlili pole NumPy. Pokryli jsme definici, dimenzionalitu, proč je to rychlé a jak funguje alokace dat v poli. Po dokončení tohoto tutoriálu získáte úplné hluboké znalosti o poli NumPy a budete je moci implementovat do svých projektů Python.