Въведение в многоизмерните масиви в Python

Често в ежедневието имаме проблеми, при които трябва да съхраняваме някои данни в правоъгълен формат на таблицата. Тези таблици могат също да се нарекат матрица или 2D масив. В Python могат да бъдат постигнати многоизмерни масиви, като има списък вътре в списъка или вложени списъци. Списъкът може да се използва за представяне на данни в по-долу формат в python:

Списък = (1, 2, 3)

Списъкът може да се запише със стойности, разделени със запетая. Списъкът може да има данни като цяло число, float, string и т.н. и може да бъде променян и след създаването. Индексирането в списъците е доста право напред, като индексът започва от 0 и се простира до цялата дължина на списъка-1.

Когато списък има други списъци като елементи, той формира многоизмерен списък или масив. Например:

Списък = ((1, 2), (2, 5), (5, 1))

Тук всяка стойност на списъка може да бъде получена, като напишете името на списъка, последвано от квадратна скоба, за да извлечете стойностите на външния списък, както е посочено по-долу:

Печат (Списък (1))

# (2, 5)

Ако искате да отидете по-далеч във вътрешния списък, добавете още една квадратна скоба, за да получите достъп до елементите му по-долу:

Печат (Списък (1) (0))

№2

По същия начин, ако имаме няколко списъка вътре в списък като:

Списък = ((1, 3, 5), (8, 5, 6), (7, 1, 6)) #може да се разглежда също като

| 1, 3, 5 |

| 8, 5, 6 |

| 7, 1, 6 |

Всички елементи на списъка могат да бъдат достъпни чрез индекси по-долу:

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

Създаване на многоизмерен списък или масив

Да предположим, че имаме две променливи като, числата на редовете 'r' и броя на колоните 'c'. следователно да се направи матрица с размер m * n, може да се направи като:

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

Този тип декларация няма да създаде m * n интервали в паметта, а само едно цяло число ще бъде създадено, което се препраща от всеки елемент от вътрешния списък, докато вътрешните списъци се поставят като елементи във външния списък. Следователно в такъв случай, ако променим всеки елемент на 5, тогава целият масив ще има 5 като стойности във всяко място на елемент от същата колона, както по-долу:

Масив (0) (0) = 5

| 5, 0, 0 |

| 5, 0, 0 |

| 5, 0, 0 |

Друг начин за деклариране на масив е чрез използване на генератор със списък на 'c' елементи, повтаряни 'r' пъти. Декларацията може да бъде направена както по-долу:

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

Тук всеки елемент е напълно независим от останалите елементи от списъка. Списъкът (0) * c се конструира r пъти като нов списък и тук не се случва копиране на препратки.

Как да въведете стойности в многоизмерни масиви?

Тук предполагаме 2D масив с r редове и c колони, за които ще вземем стойностите на елементите от потребителя.

# Потребителят ще въведе броя на редовете в първия ред

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

Итерационни стойности на многоизмерен масив

За да повторим всички елементи на многоизмерния масив, трябва да използваме вложен за концепцията цикъл, както е показано по-долу:

# в началото ще създадем масив от c колони и 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 многоизмерни масиви

Нека видим изтръпналите мултимедийни масиви в python:

Numpy е предварително дефиниран пакет в python, използван за извършване на мощни математически операции и поддържащ обект от N-измерен масив. Класът на масиви на Numpy е известен като „ndarray“, което е ключово за тази рамка. Обектите от този клас се наричат ​​масив масив. Разликата между многоизмерния списък и Numpy Arrays е, че numpy масивите са хомогенни, т.е. могат да съдържат само целочислени, низови, плаващи и т.н. стойности и размерът му е фиксиран. Многомерният списък може лесно да се преобразува в Numpy масиви, както е показано по-долу:

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

Тук даденият многоизмерен списък се предава на Numpy масив arr.

Създаване на Numpy масив

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

изход:

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

Достъп до елементарни матрични елементи, редове и колони

Всеки елемент от Numpy масива може да бъде достъпен по същия начин като на многоизмерен списък, т.е. име на масив, последвано от две квадратни скоби, които ще кажат на индекса на реда и колоните, за да изберете конкретен елемент.

Пример:

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

изход:

2

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

Някои свойства на Numpy Array

Някои основни свойства на 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())

изход:
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)) Транспониране на X = ((0 3 6) (1 4 7) (2 5 8))

заключение

Многоизмерните масиви в Python осигуряват възможност за съхраняване на различен тип данни в един масив (т.е. в случай на многоизмерен списък) с всеки елемент вътрешен масив, способен да съхранява независими данни от останалата част от масива със собствена дължина, известна също като назъбен масив, което не може да бъде постигнато в Java, C и други езици.

Препоръчителни статии

Това е ръководство за многоизмерните масиви в Python. Тук обсъждаме Въведение в многоизмерните масиви в Python, създаване на многоизмерен списък или масив и др. Можете също да прегледате и другите ни предложени статии, за да научите повече -

  1. C # назъбени масиви
  2. 3D масиви в Java
  3. Какво е TensorFlow?
  4. Какво е NumPy?
  5. За цикъл в PHP
  6. 3D масиви в C ++
  7. Масиви в PHP
  8. Как работят масиви и списъци в Python?
  9. Как работи масивът в Unix със синтаксис?