Úvod do vícerozměrných polí v Pythonu
V každodenním životě se často vyskytují problémy, kdy je třeba ukládat některá data ve formátu obdélníkové tabulky. Tyto tabulky lze také nazvat maticí nebo 2D polem. V Pythonu lze vícerozměrných polí dosáhnout tím, že se vytvoří seznam uvnitř seznamu nebo vnořené seznamy. Seznam lze použít k reprezentaci dat ve formátu níže v pythonu:
Seznam = (1, 2, 3)
Seznam lze napsat pomocí hodnot oddělených čárkami. Seznam může obsahovat data jako celé číslo, float, řetězec atd. A může být také upraven po vytvoření. Indexování v seznamech je zcela rovné, index začíná od 0 a táhne se až do celé délky seznamu-1.
Pokud seznam obsahuje další seznamy jako prvky, vytvoří vícerozměrný seznam nebo pole. Například:
Seznam = ((1, 2), (2, 5), (5, 1))
Zde lze ke každé hodnotě seznamu přistupovat tak, že napíšete název seznamu, za nímž následuje hranatá závorka pro načtení hodnot vnějšího seznamu, jak je uvedeno níže:
Tisk (Seznam (1))
# (2, 5)
Pokud chcete jít dále dovnitř vnitřního seznamu, přidejte další hranatou závorku pro přístup k jejím prvkům, jak je uvedeno níže:
Tisk (Seznam (1) (0))
# 2
Podobně, pokud máme v seznamu více seznamů, jako například:
Seznam = ((1, 3, 5), (8, 5, 6), (7, 1, 6)) # lze také zobrazit jako
| 1, 3, 5 |
| 8, 5, 6 |
| 7, 1, 6 |
Ke všem prvkům seznamu jsou přístupné níže uvedené indexy:
(0) (0), (0) (1), (0) (2) (1) (0), (1) (1), (1) (2) (2) (0), (2) (1), (2) (2)Vytvoření vícerozměrného seznamu nebo pole
Předpokládejme, že máme dvě proměnné jako počet řádků 'r' a počet sloupců 'c'. proto vytvořit matici velikosti m * n, moci být dělán jak:
Array = ( (0) * c ) * r ) # with each element value as 0
Tento typ deklarace nevytvoří v paměti m * n mezer, vytvoří se pouze jedno celé číslo, na které odkazuje každý prvek vnitřního seznamu, zatímco vnitřní seznamy jsou vloženy jako prvky do vnějšího seznamu. Proto v takovém případě, pokud změníme jakýkoli prvek na 5, bude mít celé pole 5 jako hodnoty na každém místě prvku ve stejném sloupci jako níže:
Pole (0) (0) = 5
| 5, 0, 0 |
| 5, 0, 0 |
| 5, 0, 0 |
Dalším způsobem, jak deklarovat pole, je použití generátoru se seznamem prvků „c“ opakovaných „r“. Prohlášení může být provedeno takto:
c = 4
r = 3
Array = ( (0) * c for i in range(r) )
Zde je každý prvek zcela nezávislý na ostatních prvcích seznamu. Seznam (0) * c je konstruován rkrát jako nový seznam a zde nedochází k kopírování odkazů.
Jak vložit hodnoty do vícerozměrných polí?
Zde předpokládáme 2D pole s r řádky ac sloupce, pro které vezmeme hodnoty prvků od uživatele.
# Uživatel zadá počet řádků na prvním řádku
r = int(input())
arr = () for i in range(r):
arr.append((int(j) for j in input().split()))
Iterační hodnoty vícerozměrného pole
Aby bylo možné iterovat všemi prvky vícerozměrného pole, musíme použít vnořený koncept smyčky, jak je uvedeno níže:
# Nejprve vytvoříme řadu sloupců c a řádků r
c = 4
r = 3
arr = ((0) * c for i in range(r)) # loop will run for the length of the outer list
for i in range(r):
# loop will run for the length of the inner lists
for j in range(c):
if i < j:
arr(i)(j) = 8
elif i > j:
arr(i)(j) = 4
else:
arr(i)(j) = 7
for r in arr:
print( ' '.join((str(x) for x in r) ) )
Numpy vícerozměrná pole
Podívejme se na numpy multimediální pole v pythonu:
Numpy je předdefinovaný balíček v pythonu, který se používá k provádění výkonných matematických operací a podporuje objekt N-dimenzionálního pole. Třída pole Numpy je známá jako „ndarray“, což je klíč k tomuto rámci. Objekty z této třídy se označují jako numpy pole. Rozdíl mezi vícerozměrným seznamem a Numpy poli je ten, že numpy pole jsou homogenní, tj. Mohou obsahovat pouze celé číslo, řetězec, float atd., Hodnoty a jeho velikost je pevná. Vícerozměrný seznam lze snadno převést na pole Numpy, jak je uvedeno níže:
import numpy as nmp
arr = nmp.array( ( (1, 0), (6, 4) ) )
print(arr)
Zde je daný vícerozměrný seznam obsazen do Numpy pole arr.
Vytváření Numpy Array
import numpy as nmp
X = nmp.array( ( ( 1, 6, 7), ( 5, 9, 2) ) )
print(X) #Array of integers
X = nmp.array( ( ( 1, 6.2, 7), ( 5, 9, 2) ) )
print(X) #Array of floats
X = nmp.array( ( ( 1, 6, 7), ( 5, 9, 2) ), dtype = complex )
print(X) #Array of complex numbers
Výstup:
((1 6 7) (5 9 2)) ((1. 6.2 7.) (5. 9. 2.)) ((1. + 0.j 6. + 0.j 7. + 0.j) (5. + 0.j 9. + 0.j 2. + 0.j))Přístup k Numpy maticovým prvkům, řádkům a sloupcům
Ke každému prvku pole Numpy lze přistupovat stejným způsobem jako u vícerozměrného seznamu, tj. Názvu pole následovaného dvěma hranatými závorkami, které řeknou indexu řádků a sloupců, aby vybraly konkrétní prvek.
Příklad:
import numpy as nmp
X = nmp.array( ( ( 1, 6, 7),
( 5, 9, 2),
( 3, 8, 4) ) )
print(X(1)(2)) # element at the given index ie 2
print(X(0)) # first row
print(X(1)) # second row
print(X(-1)) # last row
print(X(:, 0)) # first column
print(X(:, 2)) # third column
print(X(:, -1)) # last column
Výstup:
2
(1 6 7) (5 9 2) (3 8 4) (1 5 3) (7 2 4) (7 2 4)Některé vlastnosti Numpy Array
V níže uvedeném programu jsou použity některé základní vlastnosti polí Numpy:
import numpy as nmp
zero_array = nmp.zeros( (3, 2) )
print('zero_array = ', zero_array)
one_array = nmp.ones( (3, 2) )
print('one_array = ', one_array)
X = nmp.arange(9).reshape(3, 3)
print('X= ', X)
print('Transpose of X= ', X.transpose())
Výstup:
zero_array = ((0. 0.) (0. 0.) (0. 0.)) one_array = ((1. 1.) (1. 1.) (1. 1.)) X = ((0 1) 2) (3 4 5) (6 7 8)) Transpozice X = ((0 3 6) (1 4 7) (2 5 8))
Závěr
Multidimenzionální pole v Pythonu poskytuje možnost ukládat různý typ dat do jediného pole (tj. V případě vícerozměrného seznamu) s každým vnitřním polem prvku schopným ukládat nezávislá data ze zbytku pole s vlastní délkou, také známou jako zubaté pole., čehož nelze dosáhnout v jazycích Java, C a dalších jazycích.
Doporučené články
Toto je průvodce multidimenzionálními poli v Pythonu. Zde diskutujeme Úvod do vícerozměrných polí v Pythonu, Vytvoření vícerozměrného seznamu nebo pole atd. Další informace naleznete také v našich dalších doporučených článcích -
- C # Jagged Arrays
- 3D pole v Javě
- Co je TensorFlow?
- Co je NumPy?
- Pro smyčky v PHP
- 3D pole v C ++
- Pole v PHP
- Jak fungují pole a seznamy v Pythonu?
- Jak Array pracuje v Unixu se syntaxí?