Úvod do vícerozměrných polí v Pythonu

V každodenním životě se často vyskytují problémy, kdy je třeba ukládat některá data ve formátu obdélníkové tabulky. Tyto tabulky lze také nazvat maticí nebo 2D polem. V Pythonu lze vícerozměrných polí dosáhnout tím, že se vytvoří seznam uvnitř seznamu nebo vnořené seznamy. Seznam lze použít k reprezentaci dat ve formátu níže v pythonu:

Seznam = (1, 2, 3)

Seznam lze napsat pomocí hodnot oddělených čárkami. Seznam může obsahovat data jako celé číslo, float, řetězec atd. A může být také upraven po vytvoření. Indexování v seznamech je zcela rovné, index začíná od 0 a táhne se až do celé délky seznamu-1.

Pokud seznam obsahuje další seznamy jako prvky, vytvoří vícerozměrný seznam nebo pole. Například:

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

Zde lze ke každé hodnotě seznamu přistupovat tak, že napíšete název seznamu, za nímž následuje hranatá závorka pro načtení hodnot vnějšího seznamu, jak je uvedeno níže:

Tisk (Seznam (1))

# (2, 5)

Pokud chcete jít dále dovnitř vnitřního seznamu, přidejte další hranatou závorku pro přístup k jejím prvkům, jak je uvedeno níže:

Tisk (Seznam (1) (0))

# 2

Podobně, pokud máme v seznamu více seznamů, jako například:

Seznam = ((1, 3, 5), (8, 5, 6), (7, 1, 6)) # lze také zobrazit jako

| 1, 3, 5 |

| 8, 5, 6 |

| 7, 1, 6 |

Ke všem prvkům seznamu jsou přístupné níže uvedené indexy:

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

Vytvoření vícerozměrného seznamu nebo pole

Předpokládejme, že máme dvě proměnné jako počet řádků 'r' a počet sloupců 'c'. proto vytvořit matici velikosti m * n, moci být dělán jak:

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

Tento typ deklarace nevytvoří v paměti m * n mezer, vytvoří se pouze jedno celé číslo, na které odkazuje každý prvek vnitřního seznamu, zatímco vnitřní seznamy jsou vloženy jako prvky do vnějšího seznamu. Proto v takovém případě, pokud změníme jakýkoli prvek na 5, bude mít celé pole 5 jako hodnoty na každém místě prvku ve stejném sloupci jako níže:

Pole (0) (0) = 5

| 5, 0, 0 |

| 5, 0, 0 |

| 5, 0, 0 |

Dalším způsobem, jak deklarovat pole, je použití generátoru se seznamem prvků „c“ opakovaných „r“. Prohlášení může být provedeno takto:

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

Zde je každý prvek zcela nezávislý na ostatních prvcích seznamu. Seznam (0) * c je konstruován rkrát jako nový seznam a zde nedochází k kopírování odkazů.

Jak vložit hodnoty do vícerozměrných polí?

Zde předpokládáme 2D pole s r řádky ac sloupce, pro které vezmeme hodnoty prvků od uživatele.

# Uživatel zadá počet řádků na prvním řádku

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

Iterační hodnoty vícerozměrného pole

Aby bylo možné iterovat všemi prvky vícerozměrného pole, musíme použít vnořený koncept smyčky, jak je uvedeno níže:

# Nejprve vytvoříme řadu sloupců c a řádků 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 vícerozměrná pole

Podívejme se na numpy multimediální pole v pythonu:

Numpy je předdefinovaný balíček v pythonu, který se používá k provádění výkonných matematických operací a podporuje objekt N-dimenzionálního pole. Třída pole Numpy je známá jako „ndarray“, což je klíč k tomuto rámci. Objekty z této třídy se označují jako numpy pole. Rozdíl mezi vícerozměrným seznamem a Numpy poli je ten, že numpy pole jsou homogenní, tj. Mohou obsahovat pouze celé číslo, řetězec, float atd., Hodnoty a jeho velikost je pevná. Vícerozměrný seznam lze snadno převést na pole Numpy, jak je uvedeno níže:

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

Zde je daný vícerozměrný seznam obsazen do Numpy pole arr.

Vytváření 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ýstup:

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

Přístup k Numpy maticovým prvkům, řádkům a sloupcům

Ke každému prvku pole Numpy lze přistupovat stejným způsobem jako u vícerozměrného seznamu, tj. Názvu pole následovaného dvěma hranatými závorkami, které řeknou indexu řádků a sloupců, aby vybraly konkrétní prvek.

Pří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ýstup:

2

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

Některé vlastnosti Numpy Array

V níže uvedeném programu jsou použity některé 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ýstup:
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)) Transpozice X = ((0 3 6) (1 4 7) (2 5 8))

Závěr

Multidimenzionální pole v Pythonu poskytuje možnost ukládat různý typ dat do jediného pole (tj. V případě vícerozměrného seznamu) s každým vnitřním polem prvku schopným ukládat nezávislá data ze zbytku pole s vlastní délkou, také známou jako zubaté pole., čehož nelze dosáhnout v jazycích Java, C a dalších jazycích.

Doporučené články

Toto je průvodce multidimenzionálními poli v Pythonu. Zde diskutujeme Úvod do vícerozměrných polí v Pythonu, Vytvoření vícerozměrného seznamu nebo pole atd. Další informace naleznete také v našich dalších doporučených článcích -

  1. C # Jagged Arrays
  2. 3D pole v Javě
  3. Co je TensorFlow?
  4. Co je NumPy?
  5. Pro smyčky v PHP
  6. 3D pole v C ++
  7. Pole v PHP
  8. Jak fungují pole a seznamy v Pythonu?
  9. Jak Array pracuje v Unixu se syntaxí?

Kategorie: