Ú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 -

  1. C # Jagged Arrays
  2. 3D polia v Jave
  3. Čo je TensorFlow?
  4. Čo je NumPy?
  5. Pre slučku v PHP
  6. 3D polia v C ++
  7. Polia v PHP
  8. Ako fungujú polia a zoznamy v Pythone?
  9. Ako Array pracuje v Unixe so syntaxou?

Kategórie: