Sissejuhatus mitmemõõtmelisse massiivi Pythonis

Sageli on meil igapäevaelus probleeme, kus peame salvestama mõned andmed ristkülikukujulise tabeli vormingus. Neid tabeleid võib nimetada ka maatriksiks või 2D-massiiviks. Pythonis saab mitmemõõtmelisi massiive saavutada, kui loendis on loendi sees või pesastatud loendid. Loendit saab kasutada järgmises vormingus andmete kuvamiseks pythonis:

Loend = (1, 2, 3)

Loendit saab kirjutada komaeraldusega. Loendis võib olla selliseid andmeid nagu täisarv, ujuk, string jne. Ning seda saab pärast loomist muuta. Indekseerimine loendites on üsna sirge, indeks algab 0-st ja ulatub kogu loendi-1 pikkuseni.

Kui loendis on elementidena muid loendeid, moodustab see mitmemõõtmelise loendi või massiivi. Näiteks:

Loend = ((1, 2), (2, 5), (5, 1))

Siin saab igale loendi väärtusele juurde pääseda, kirjutades loendi nimele, millele järgneb nurksulg, et saada alljärgnevad loendi välimised väärtused:

Prindi (loend (1))

# (2, 5)

Kui soovite sisemises loendis edasi liikuda, lisage veel üks nurksulg, et pääseda juurde selle elementidele nagu allpool:

Prindi (loend (1) (0))

# 2

Samamoodi, kui meil on loendis mitu loendit, näiteks:

Loend = ((1, 3, 5), (8, 5, 6), (7, 1, 6)) # võib ka vaadata kui

| 1, 3, 5 |

| 8, 5, 6 |

| 7, 1, 6 |

Kõigile loendi elementidele pääseb juurde indeksite abil:

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

Mitmemõõtmelise loendi või massiivi loomine

Oletame, et meil on kaks muutujat, näiteks ridade r ja veergude arv c. seega saab maatriksi suurusega m * n teha järgmiselt:

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

Seda tüüpi deklaratsioon ei tekita mälus m * n tühikuid, luuakse ainult üks täisarv, millele osutab sisemise loendi iga element, samas kui sisemised loendid on paigutatud välise loendi elementideks. Seega, kui muudame mis tahes elemendi väärtuseks 5, on kogu massiivi väärtused 5 sama veeru igas elemendikohas järgmiselt:

Massiiv (0) (0) = 5

| 5, 0, 0 |

| 5, 0, 0 |

| 5, 0, 0 |

Teine viis massiivi deklareerimiseks on generaatori kasutamine koos c-elementide loendiga, mida korratakse r-korda. Deklaratsiooni saab teha järgmiselt:

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

Siin on iga element täiesti sõltumatu nimekirja muudest elementidest. Loend (0) * c konstrueeritakse r korda uue loendina ja siin ei toimu viidete kopeerimist.

Kuidas sisestada väärtusi mitmemõõtmelisse massiivi?

Eeldame siin 2D-massiivi koos ridade ja c-veergudega, mille jaoks võtame kasutajalt elementide väärtused.

# Kasutaja sisestab esimesele reale ridade arvu

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

Mitmemõõtmelise massiivi korduvad väärtused

Kõigi mitmemõõtmelise massiivi elementide kordamiseks peame kasutama silmuskontseptsiooni pesasid järgmiselt:

# alguses loome massiivi veerge ja ridu

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

Tuhmid mitmemõõtmelised massiivid

Vaatame Pythonis olevaid tuimasid multimeediumimassiive:

Numpy on pythoni eelnevalt määratletud pakett, mida kasutatakse võimsate matemaatiliste toimingute tegemiseks ja N-mõõtmelise maatriksiobjekti toetamiseks. Numpy massiiviklass on tuntud kui „ndarray“, mis on selle raamistiku võti. Selle klassi objekte nimetatakse tuimaks massiiviks. Erinevus mitmemõõtmeliste loendite ja tuhmmassiivide vahel on see, et tuhmid massiivid on homogeensed, st need võivad sisaldada ainult täisarvu, stringi, ujuki jne väärtusi ja selle suurus on fikseeritud. Mitmemõõtmelist loendit saab hõlpsalt teisendada tujukasteks massiivideks nagu allpool:

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

Siin suunatakse antud mitmemõõtmeline loend Numpy massiivi arr.

Numpy massiivi loomine

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äljund:

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

Juurdepääs tuhmidele maatriksielementidele, ridadele ja veergudele

Igale Numpy-massiivi elemendile pääseb juurde sarnaselt mitmemõõtmelise nimekirjaga, st massiivi nimele järgnevad kaks ruudukujulist traksid, mis annavad rea ja veeru indeksi konkreetse elemendi valimiseks.

Näide:

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äljund:

2

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

Mõned tujukas massiivi omadused

Järgnevas programmis kasutatakse mõnda Numpy massiivi põhilisi omadusi:

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äljund:
null_massiiv = ((0. 0.) (0. 0.) (0. 0.)) üks_massiiv = ((1. 1.) (1. 1.) (1. 1.)) X = ((0 1 2) (3 4 5) (6 7 8)) X-i ülevõtmine = ((0 3 6) (1 4 7) (2 5 8))

Järeldus

Mitmemõõtmelised massiivid Pythonis võimaldavad salvestada erinevat tüüpi andmeid ühte massiivi (st mitmemõõtmelise loendi korral) iga elemendi sisemise massiiviga, mis on võimeline salvestama ülejäänud massiivi sõltumatuid andmeid oma pikkusega, mida nimetatakse ka sakitud massiiviks, mida ei saa Java, C ja muudes keeltes saavutada.

Soovitatavad artiklid

See on juhend mitmemõõtmeliste massiivide kohta Pythonis. Siin käsitleme Pythoni mitmemõõtmeliste massiivide sissejuhatust, mitmemõõtmelise loendi või massiivi loomist jne. Lisateabe saamiseks võite tutvuda ka meie teiste soovitatud artiklitega -

  1. C # sakilised massiivid
  2. 3D-massiivid Java-s
  3. Mis on TensorFlow?
  4. Mis on NumPy?
  5. Loopi jaoks PHP-s
  6. 3D-massiivid C ++ -s
  7. Massiivid PHP-s
  8. Kuidas massiivid ja loendid Pythonis töötavad?
  9. Kuidas massiiv töötab Unixis koos süntaksiga?

Kategooria: