Uvod v večdimenzionalne matrike v Pythonu

Pogosto v vsakdanjem življenju imamo težave, kam moramo nekaj podatkov shraniti v pravokotno obliko tabele. Te tabele lahko imenujemo tudi matrica ali 2D matrika. V Pythonu lahko večdimenzionalne matrike dosežemo tako, da imamo seznam znotraj seznama ali ugnezdene sezname. Seznam lahko uporabite za predstavitev podatkov v spodnjem formatu v pythonu:

Seznam = (1, 2, 3)

Seznam se lahko zapiše z vrednostmi, ločenimi z vejicami. Seznam lahko vsebuje podatke, kot so celo število, plovec, niz itd. In jih je mogoče spreminjati tudi po ustvarjanju. Indeksiranje na seznamih je precej naravnost naprej, indeks se začne od 0 in sega do celotne dolžine seznama-1.

Kadar ima seznam druge elemente kot elemente, tvori večdimenzionalen seznam ali niz. Na primer:

Seznam = ((1, 2), (2, 5), (5, 1))

Tu lahko dostopate do vsake vrednosti seznama tako, da napišete ime seznama, ki mu sledi kvadratni oklepaj, da dobite vrednosti zunanjega seznama, kot so spodaj:

Natisni (Seznam (1))

# (2, 5)

Če želite iti dlje v notranji seznam, dodajte še en kvadratni oklepaj, da dostopate do njegovih elementov kot spodaj:

Natisni (Seznam (1) (0))

# 2

Podobno je, če imamo na seznamu več seznamov, kot so:

Seznam = ((1, 3, 5), (8, 5, 6), (7, 1, 6)) # lahko štejemo tudi kot

| 1, 3, 5 |

| 8, 5, 6 |

| 7, 1, 6 |

Do vseh elementov seznama lahko dostopate s spodnjimi indeksi:

(0) (0), (0) (1), (0) (2) (1) (0), (1) (1), (1) (2) (2) (0), (2) (1), (2) (2)

Ustvarjanje večdimenzionalnega seznama ali matrike

Predpostavimo, da imamo dve spremenljivki kot, število vrstic 'r' in število stolpcev 'c'. zato lahko naredimo matrico velikosti m * n, kot:

Array = ( (0) * c ) * r ) # with each element value as 0

Ta vrsta deklaracije ne bo ustvarila m * n presledkov v pomnilniku, temveč bo ustvarjeno samo eno celo število, na katerega se sklicuje vsak element notranjega seznama, medtem ko so notranji seznami kot elementi v zunanjem seznamu. Torej, če spremenimo kateri koli element v 5, bo imel celoten niz 5 kot vrednosti na vsakem mestu elementov istega stolpca kot spodaj:

Niz (0) (0) = 5

| 5, 0, 0 |

| 5, 0, 0 |

| 5, 0, 0 |

Drug način razglasitve matrike je uporaba generatorja s seznamom 'c' elementov, ponovljenih 'r' krat. Izjavo lahko naredite na naslednji način:

c = 4
r = 3
Array = ( (0) * c for i in range(r) )

Tu je vsak element popolnoma neodvisen od drugih elementov seznama. Seznam (0) * c je sestavljen r-krat kot nov seznam in tu se ne zgodi kopiranje sklicev.

Kako vnesti vrednosti v večdimenzionalne matrike?

Tukaj predpostavljamo 2D matriko z r vrsticami in c stolpci, za katere bomo vzeli vrednosti elementov od uporabnika.

# Uporabnik v prvo vrstico vnese število vrstic

r = int(input())
arr = () for i in range(r):
arr.append((int(j) for j in input().split()))

Iteriranje vrednosti večdimenzionalnega niza

Za ponovitev skozi vse elemente večdimenzionalnega niza moramo uporabiti ugnezdeni za koncept zanke, kot je spodaj:

# najprej bomo ustvarili matriko stolpcev c in r vrstic

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 večdimenzionalni nizi

Oglejmo si trmast multimedijski niz v pythonu:

Numpy je vnaprej določen paket v pythonu, ki se uporablja za izvajanje močnih matematičnih operacij in podpira objekt N-dimenzionalne matrike. Numpyjev niz matic je znan kot "ndarray", kar je ključno za ta okvir. Predmeti iz tega razreda se imenujejo ničelni niz. Razlika med večdimenzionalnim seznamom in numeričnimi nizi je v tem, da so numerični nizi homogeni, tj. Lahko vsebujejo samo celo število, niz, plovec itd., Vrednosti in njihova velikost je določena. Večdimenzionalni seznam lahko enostavno pretvorite v Numpy matrike, kot je spodaj:

import numpy as nmp
arr = nmp.array( ( (1, 0), (6, 4) ) )
print(arr)

Tu je dani večdimenzionalni seznam dodeljen matrični matriki Numpy.

Ustvarjanje maticnega niza

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

Izhod:

((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))

Dostop do elementov, vrstic in stolpcev matričnih matric

Do vseh elementov Numpy matrike je mogoče dostopati na enak način kot v večdimenzionalnem seznamu, tj. Ime matrike, ki ji sledita dve kvadratni naramnici, ki bosta kazala vrstico in indeks stolpcev, da izbereta določen element.

Primer:

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

Izhod:

2

(1 6 7) (5 9 2) (3 8 4) (1 5 3) (7 2 4) (7 2 4)

Nekaj ​​lastnosti Numpy Array

V spodnjem programu so uporabljene nekatere osnovne lastnosti matic 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())

Izhod:
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)) Prenos X = ((0 3 6) (1 4 7) (2 5 8))

Zaključek

Večdimenzionalni nizi v Python-u omogočajo shranjevanje različnih vrst podatkov v en niz (tj. V primeru večdimenzionalnega seznama) z vsakim notranjim nizom elementov, ki lahko shrani neodvisne podatke iz preostalega dela matrike z lastno dolžino, imenovano tudi nazobčan niz, česar v Java, C in drugih jezikih ni mogoče doseči.

Priporočeni članki

To je vodnik po večdimenzionalnih nizih v Pythonu. Tukaj razpravljamo o Uvodu v večdimenzionalne matrike v Pythonu, ustvarjanju večdimenzionalnega seznama ali matrike itd. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke -

  1. C # nazobčani nizi
  2. 3D matriki na Javi
  3. Kaj je TensorFlow?
  4. Kaj je NumPy?
  5. Za zanko v PHP
  6. 3D matriki v C ++
  7. Nizi v PHP
  8. Kako matriki in seznami delujejo v Pythonu?
  9. Kako Array deluje v Unixu s sintakso?