Úvod do viacrozmerných polí v Pythone
V každodennom živote často máme problémy, keď musíme ukladať niektoré údaje vo formáte obdĺžnikovej tabuľky. Tieto tabuľky môžu byť tiež nazývané maticové alebo 2D polia. V Pythone je možné multidimenzionálne polia dosiahnuť vytvorením zoznamu vo vnútri zoznamu alebo vnorených zoznamov. Zoznam je možné použiť na reprezentáciu údajov v nižšie uvedenom formáte v pythone:
Zoznam = (1, 2, 3)
Zoznam možno písať s hodnotami oddelenými čiarkami. Zoznam môže obsahovať údaje ako celé číslo, plávajúce číslo, reťazec atď. A môže byť tiež upravený po vytvorení. Indexovanie v zoznamoch je celkom rovno, index začína od 0 a siaha až do celej dĺžky zoznamu-1.
Ak zoznam obsahuje ďalšie zoznamy ako prvky, vytvára viacrozmerný zoznam alebo pole. Napríklad:
Zoznam = ((1, 2), (2, 5), (5, 1))
Tu je možné získať prístup ku každej hodnote zoznamu tak, že napíšete názov zoznamu, za ktorým nasleduje hranatá zátvorka, aby sa získali vonkajšie hodnoty zoznamu, ako je uvedené nižšie:
Tlač (Zoznam (1))
# (2, 5)
Ak chcete ísť ďalej vo vnútornom zozname, pridajte ďalšiu hranatú zátvorku pre prístup k jej prvkom, ako je uvedené nižšie:
Tlač (Zoznam (1) (0))
# 2
Podobne, ak máme v zozname viacero zoznamov, ako napríklad:
Zoznam = ((1, 3, 5), (8, 5, 6), (7, 1, 6)) # môže byť tiež zobrazený ako
| 1, 3, 5 |
| 8, 5, 6 |
| 7, 1, 6 |
Všetky prvky zoznamu sú prístupné pomocou nižšie uvedených indexov:
(0) (0), (0) (1), (0) (2) (1) (0), (1) (1), (1) (2) (2) (0), (2) (1), (2) (2)Vytvorenie viacrozmerného zoznamu alebo poľa
Predpokladajme, že máme dve premenné ako počet riadkov „r“ a počet stĺpcov „c“. preto je možné vytvoriť maticu veľkosti m * n, ako:
Array = ( (0) * c ) * r ) # with each element value as 0
Tento typ deklarácie nevytvorí v pamäti m * n medzier, vytvorí sa iba jedno celé číslo, na ktoré odkazuje každý prvok vnútorného zoznamu, zatiaľ čo vnútorné zoznamy sa vkladajú ako prvky do vonkajšieho zoznamu. Preto v takom prípade, ak zmeníme ktorýkoľvek prvok na 5, celé pole bude mať 5 ako hodnoty na každom mieste prvku v tom istom stĺpci ako je uvedené nižšie:
Pole (0) (0) = 5
| 5, 0, 0 |
| 5, 0, 0 |
| 5, 0, 0 |
Ďalším spôsobom, ako deklarovať pole, je použitie generátora so zoznamom prvkov „c“ opakovaných „r“. Vyhlásenie možno urobiť nasledovne:
c = 4
r = 3
Array = ( (0) * c for i in range(r) )
Tu je každý prvok úplne nezávislý od ostatných prvkov zoznamu. Zoznam (0) * c je konštruovaný r-krát ako nový zoznam, a tu nedochádza k kopírovaniu odkazov.
Ako zadávať hodnoty do viacrozmerných polí?
Tu predpokladáme 2D pole s r riadkami ac stĺpcami, pre ktoré vezmeme hodnoty prvkov od užívateľa.
# Užívateľ zadá počet riadkov v prvom riadku
r = int(input())
arr = () for i in range(r):
arr.append((int(j) for j in input().split()))
Iteračné hodnoty viacrozmerného poľa
Aby sme mohli iterovať cez všetky prvky viacrozmerného poľa, musíme použiť vnorený koncept slučky, ako je uvedené nižšie:
# Najprv vytvoríme pole stĺpcov c a 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 viacrozmerné polia
Pozrime sa na početné multimediálne polia v Pythone:
Numpy je preddefinovaný balík v pythone, ktorý sa používa na vykonávanie výkonných matematických operácií a podporuje objekt N-rozmerného poľa. Trieda poľa Numpy je známa ako „ndarray“, čo je kľúčom k tomuto rámcu. Objekty z tejto triedy sa označujú ako numpy array. Rozdiel medzi mnohorozmerným zoznamom a početnými poliami je v tom, že početné polia sú homogénne, tj môžu obsahovať iba celé čísla, reťazce, plaváky atď. A ich veľkosť je pevná. Viacrozmerný zoznam je možné ľahko previesť do polí Numpy, ako je uvedené nižšie:
import numpy as nmp
arr = nmp.array( ( (1, 0), (6, 4) ) )
print(arr)
Tu je daný multidimenzionálny zoznam odovzdaný do Numpy array arr.
Vytváranie 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ýkon:
((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))Prístup k elementom Numpy Matrix, riadkom a stĺpcom
Ku každému prvku poľa Numpy je možné pristupovať rovnakým spôsobom ako k zoznamu viacerých rozmerov, tj k názvu poľa nasledovanému dvoma hranatými zátvorkami, ktoré povedia indexu riadkov a stĺpcov, aby vybrali konkrétny prvok.
Prí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ýkon:
2
(1 6 7) (5 9 2) (3 8 4) (1 5 3) (7 2 4) (7 2 4)Niektoré vlastnosti Numpy Array
V nasledujúcom programe sa používajú niektoré 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ýkon:
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)) Transpozícia X = ((0 3 6) (1 4 7) (2 5 8))
záver
Multidimenzionálne polia v Pythone poskytujú možnosť ukladať rôzne typy údajov do jedného poľa (tj v prípade viacrozmerného zoznamu) s každým vnútorným poľom prvkov schopným ukladať nezávislé údaje zo zvyšku poľa s jeho vlastnou dĺžkou, tiež známe ako zubaté pole., ktoré nie je možné dosiahnuť v jazykoch Java, C a ďalších jazykoch.
Odporúčané články
Toto je príručka pre viacrozmerné polia v Pythone. Tu diskutujeme Úvod do multidimenzionálnych polí v Pythone, Vytvorenie multidimenzionálneho zoznamu alebo Array, atď. Ak sa chcete dozvedieť viac, môžete si tiež prečítať naše ďalšie navrhované články -
- C # Jagged Arrays
- 3D polia v Jave
- Čo je TensorFlow?
- Čo je NumPy?
- Pre slučku v PHP
- 3D polia v C ++
- Polia v PHP
- Ako fungujú polia a zoznamy v Pythone?
- Ako Array pracuje v Unixe so syntaxou?