Guide til arrays i Python

Guide til arrays i Python

Introduktion

Forestil dig, at du har en playliste med dine yndlingssange på din telefon. Denne afspilningsliste er en liste, hvor hver sang er placeret i en bestemt rækkefølge. Du kan afspille den første sang, springe til den anden, hoppe til den femte og så videre. Denne afspilningsliste minder meget om et array i computerprogrammering.

Arrays står som en af ​​de mest fundamentale og udbredte datastrukturer.

I bund og grund er et array en struktureret måde at gemme flere elementer (som tal, tegn eller endda andre arrays) i en bestemt rækkefølge, og du kan hurtigt få adgang til, ændre eller fjerne ethvert element, hvis du kender dets position (indeks).

I denne vejledning giver vi dig et omfattende overblik over array-datastrukturen. Først og fremmest vil vi tage et kig på, hvad arrays er, og hvad er deres vigtigste egenskaber. Vi vil derefter gå over til Pythons verden og udforske, hvordan arrays implementeres, manipuleres og anvendes i scenarier i den virkelige verden.

Forståelse af array-datastrukturen

Arrays er blandt de ældste og mest grundlæggende datastrukturer, der bruges inden for datalogi og programmering. Deres enkelhed, kombineret med deres effektivitet i visse operationer, gør dem til et hovedemne for alle, der dykker ned i området for datastyring og -manipulation.

Et array er en samling af genstande, typisk af samme type, gemt i sammenhængende hukommelsessteder.

Denne sammenhængende lagring gør det muligt for arrays at give konstant adgang til ethvert element, givet dets indeks. Hvert element i et array kaldes en element, og positionen af ​​et element i arrayet er defineret af dens indeks, som normalt starter fra nul.

Overvej for eksempel en række heltal: [10, 20, 30, 40, 50]. Her er elementet 20 har et indeks på 1:

python array indeksering

Der er flere fordele at bruge arrays til at gemme vores data. For eksempel giver arrays mulighed for på grund af deres hukommelseslayout O (1) (konstant) tidskompleksitet ved adgang til et element ved dets indeks. Dette er især fordelagtigt, når vi har brug for tilfældig adgang til elementer. Derudover er arrays gemt i sammenhængende hukommelsessteder, hvilket kan føre til bedre cache-lokalitet og generelle præstationsforbedringer i visse operationer. En anden bemærkelsesværdig fordel ved at bruge arrays er, at da arrays har en fast størrelse, når de først er deklareret, er det nemmere at administrere hukommelse og undgå uventede overløb eller fejl i hukommelsen.

Bemærk: Arrays er især nyttige i scenarier, hvor størrelsen af ​​samlingen er kendt på forhånd og forbliver konstant, eller hvor tilfældig adgang er hyppigere end indsættelser og sletninger.

På den anden side kommer arrays med deres eget sæt af begrænsninger. En af de primære begrænsninger ved traditionelle arrays er deres fast størrelse. Når først et array er oprettet, kan dets størrelse ikke ændres. Dette kan føre til problemer som spild af hukommelse (hvis arrayet er for stort) eller behovet for at ændre størrelse (hvis arrayet er for lille). Derudover kræver indsættelse eller sletning af et element midt i et array skift af elementer, hvilket fører til O (n) tidskompleksitet for disse operationer.

For at opsummere alt dette, lad os illustrere de vigtigste egenskaber ved arrays ved hjælp af eksemplet på sangafspilningslisten fra begyndelsen af ​​denne vejledning. Et array er en datastruktur, der:

  • Er indekseret: Ligesom hver sang på din afspilningsliste har et nummer (1, 2, 3, …), har hvert element i et array et indeks. Men i de fleste programmeringssprog starter indekset ved 0. Så det første element er ved indeks 0, det andet ved indeks 1, og så videre.

  • Har fast størrelse: Når du opretter en afspilningsliste for f.eks. 10 sange, kan du ikke tilføje en 11. sang uden først at fjerne en. På samme måde har arrays en fast størrelse. Når du først har oprettet en matrix af en bestemt størrelse, kan du ikke tilføje flere elementer end dens kapacitet.

  • er homogen: Alle sange på din afspilningsliste er musiknumre. På samme måde er alle elementer i et array af samme type. Hvis du har en række heltal, kan du ikke pludselig gemme en tekststreng i den.

  • Har direkte adgang: Hvis du vil lytte til den 7. sang på din spilleliste, kan du hoppe direkte til den. På samme måde kan du med arrays øjeblikkeligt få adgang til ethvert element, hvis du kender dets indeks.

  • Sammenhængende hukommelse: Dette er lidt mere teknisk. Når et array oprettes i en computers hukommelse, optager det en kontinuerlig hukommelsesblok. Tænk på det som en række af tilstødende skabe i skolen. Hvert skab er ved siden af ​​det andet, uden mellemrum imellem.

Python og Arrays

Python, kendt for sin fleksibilitet og brugervenlighed, tilbyder flere måder at arbejde med arrays på. Selvom Python ikke har en indbygget array-datastruktur som nogle andre sprog, giver den kraftfulde alternativer, der kan fungere på samme måde og endda tilbyde udvidede muligheder.

Ved første øjekast, Pythons liste kan virke synonymt med en matrix, men der er subtile forskelle og nuancer at overveje:

Liste Array
En indbygget Python-datastruktur Ikke native i Python - de kommer fra "array"-modulet
Dynamisk størrelse Fast (foruddefineret) størrelse
Kan indeholde elementer af forskellige datatyper Hold genstande af samme type
Giv en række indbyggede metoder til manipulation Behov for at importere eksterne moduler
O(1) tidskompleksitet for adgangsoperationer O(1) tidskompleksitet for adgangsoperationer
Brug mere hukommelse Mere hukommelseseffektiv

Når man ser på denne tabel, kommer det naturligt at spørge – "Hvornår skal man bruge hvilken?". Nå, hvis du har brug for en samling, der kan vokse eller krympe dynamisk og kan indeholde blandede datatyper, er Pythons liste vejen at gå. Men for scenarier, der kræver en mere hukommelseseffektiv samling med elementer af samme type, kan du overveje at bruge Pythons array modul eller eksterne biblioteker som NumPy.

matrix Modul i Python

Når de fleste udviklere tænker på arrays i Python, tænker de ofte på lister. Python tilbyder dog en mere specialiseret matrixstruktur gennem dens indbyggede array modul. Dette modul giver en pladseffektiv lagring af grundlæggende C-stil datatyper i Python.

Selvom Python-lister er utroligt alsidige og kan gemme enhver type objekt, kan de nogle gange være overkill, især når du kun skal gemme en samling af grundlæggende datatyper, såsom heltal eller flydende. Det array modul giver en måde at skabe arrays, der er mere hukommelseseffektive end lister for specifikke datatyper.

Oprettelse af et array

At bruge array modul, skal du først importere det:

from array import array

Når det er importeret, kan du oprette et array ved hjælp af array() konstruktør:

arr = array('i', [1, 2, 3, 4, 5])
print(arr)

Her, den 'i' argument angiver, at arrayet vil gemme signeret heltal. Der findes flere andre typekoder, som f.eks 'f' til flydere og 'd' for doubler.

Adgang til og ændring af elementer

Du kan få adgang til og ændre elementer i et array ligesom du ville gøre med en liste:

print(arr[2]) 

Og lad os nu ændre elementet ved at ændre dets værdi til 6:

arr[2] = 6
print(arr) 

Array-metoder

array modul giver flere metoder til at manipulere arrays:

  • append() – Tilføjer et element til slutningen af ​​arrayet:

    arr.append(7)
    print(arr) 
  • extend() – Føjer iterable elementer til slutningen:

    arr.extend([8, 9])
    print(arr) 
  • pop() – Fjerner og returnerer elementet på den givne position:

    arr.pop(2)
    print(arr) 
  • remove(): Fjerner den første forekomst af den angivne værdi:

    arr.remove(2)
    print(arr) 
  • reverse(): Omvendt rækkefølgen af ​​arrayet:

    arr.reverse()
    print(arr) 

Bemærk: Der er flere metoder, end vi har nævnt her. Der henvises til officiel Python-dokumentation for at se en liste over alle tilgængelige metoder i array modul.

Mens array modul tilbyder en mere hukommelseseffektiv måde at gemme grundlæggende datatyper på, det er vigtigt at huske det begrænsninger. I modsætning til lister er arrays homogen. Det betyder, at alle elementer i arrayet skal være af samme type. Du kan også kun gemme grundlæggende C-stil datatyper i arrays. Hvis du skal gemme brugerdefinerede objekter eller andre Python-typer, skal du bruge en liste eller en anden datastruktur.

NumPy-arrays

NumPy, forkortelse for Numerical Python, er en grundlæggende pakke til numeriske beregninger i Python. En af dens primære funktioner er dens kraftfulde N-dimensionelt array objekt, som tilbyder hurtige operationer på arrays, herunder matematisk, logisk, formmanipulation og mere.

NumPy-arrays er mere alsidige end Pythons indbyggede array modul og er en fast bestanddel i datavidenskab og maskinlæringsprojekter.

Hvorfor bruge NumPy-arrays?

Det første der kommer til at tænke på er ydeevne. NumPy-arrays er implementeret i C og giver mulighed for effektiv hukommelseslagring og hurtigere operationer på grund af optimerede algoritmer og fordelene ved sammenhængende hukommelseslagring.

Mens Pythons indbyggede lister og arrays er endimensionelle, kan NumPy arrays være multidimensionel, hvilket gør dem ideelle til at repræsentere matricer eller tensorer.

Tjek vores praktiske, praktiske guide til at lære Git, med bedste praksis, brancheaccepterede standarder og inkluderet snydeark. Stop med at google Git-kommandoer og faktisk lærer det!

Endelig giver NumPy en bred vifte af funktioner at operere på disse arrays, fra grundlæggende aritmetik til avancerede matematiske operationer, omformning, opdeling og mere.

Bemærk: Når du kender størrelsen på dataene på forhånd, kan forudallokering af hukommelse til arrays (især i NumPy) føre til ydeevneforbedringer.

Oprettelse af et NumPy-array

For at bruge NumPy skal du først installere det (pip install numpy) og importer det derefter:

import numpy as np

Når det er importeret, kan du oprette et NumPy-array ved hjælp af array() fungere:

arr = np.array([1, 2, 3, 4, 5])
print(arr) 

Du kan også oprette multidimensionelle arrays:

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)

Dette vil give os:

[[1 2 3] [4 5 6] [7 8 9]]

Udover disse grundlæggende måder, vi kan skabe arrays på, giver NumPy os andre smarte måder, vi kan skabe arrays på. En af dem er arange() metode. Det opretter arrays med regelmæssigt stigende værdier:

arr = np.arange(10)
print(arr) 

En anden er linspace() metode, som opretter arrays med et specificeret antal elementer, fordelt ligeligt mellem specificerede begyndelses- og slutværdier:

even_space = np.linspace(0, 1, 5)
print(even_space) 

Adgang til og ændring af elementer

Adgang til og ændring af elementer i et NumPy-array er intuitivt:

print(arr[2]) arr[2] = 6
print(arr) 

Gør stort set det samme for multidimensionelle arrays:

print(matrix[1, 2]) matrix[1, 2] = 10
print(matrix)

Ændrer værdien af ​​elementet i anden række (indeks 1) og den tredje kolonne (indeks 2):

[[1 2 3] [4 5 20] [7 8 9]]

Ændring af formen på et array

NumPy tilbyder mange funktioner og metoder til at manipulere og operere på arrays. Du kan f.eks. bruge reshape() metode til ændre formen på et array. Lad os sige, at vi har et simpelt array:

import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print("Original Array:")
print(arr) 

Og vi ønsker at omforme den til en 3×4 matrix. Alt du skal gøre er at bruge reshape() metode med ønskede dimensioner videregivet som argumenter:


reshaped_arr = arr.reshape(3, 4)
print("Reshaped Array (3x4):")
print(reshaped_arr)

Dette vil resultere i:

Reshaped Array (3x4):
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]

Matrix multiplikation

numpy.dot() metode bruges til matrix multiplikation. Det returnerer prikproduktet af to arrays. For endimensionelle arrays er det indre produkt af arrays. For 2-dimensionelle arrays svarer det til matrix multiplikation, og for ND er det en sum produkt over den sidste akse i det første array og den næstsidste i det andet array.

Lad os se, hvordan det virker. Lad os først beregne prikproduktet af to 1-D-arrays (det indre produkt af vektorerne):

import numpy as np vec1 = np.array([1, 2, 3])
vec2 = np.array([4, 5, 6])
dot_product_1d = np.dot(vec1, vec2) print("Dot product of two 1-D arrays:")
print(dot_product_1d) 

Dette vil resultere i:

Dot product of two 1-D arrays:
32

32 er faktisk det indre produkt af de to arrays – (14 + 25 + 3*6). Dernæst kan vi udføre matrixmultiplikation af to 2D-arrays:


mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[2, 0], [1, 3]])
matrix_product = np.dot(mat1, mat2) print("Matrix multiplication of two 2-D arrays:")
print(matrix_product) 

Hvilket vil give os:

Matrix multiplication of two 2-D arrays:
[[ 4 6] [10 12]]

NumPy-arrays er et væsentligt skridt op fra Pythons indbyggede lister og array modul, især til videnskabelige og matematiske beregninger. Deres effektivitet kombineret med den rige funktionalitet fra NumPy-biblioteket gør dem til et uundværligt værktøj for alle, der ønsker at udføre numeriske operationer i Python.

Konklusion

Arrays, en hjørnesten inden for datalogi og programmering, har bevist deres værd gang på gang på tværs af forskellige applikationer og domæner. I Python er denne grundlæggende datastruktur gennem dens forskellige inkarnationer som lister array modul og de kraftfulde NumPy-arrays tilbyder udviklere en blanding af effektivitet, alsidighed og enkelhed.

Gennem denne guide har vi rejst fra de grundlæggende koncepter for arrays til deres praktiske anvendelser i Python. Vi har set, hvordan arrays med deres hukommelsessammenhængende natur giver hurtige adgangstider, og hvordan Pythons dynamiske lister bringer et ekstra lag af fleksibilitet. Vi har også dykket ned i den specialiserede verden af ​​NumPy, hvor arrays forvandles til kraftfulde værktøjer til numerisk beregning.

Tidsstempel:

Mere fra Stablemisbrug