Iteracja tablicy NumPy
Tablice iteracyjne
Iteracja oznacza przechodzenie przez elementy jeden po drugim.
Ponieważ mamy do czynienia z wielowymiarowymi tablicami w numpy, możemy to zrobić za pomocą podstawowej
for
pętli Pythona.
Jeśli będziemy iterować po tablicy 1-D, przejdzie ona przez każdy element jeden po drugim.
Przykład
Wykonaj iterację na elementach następującej tablicy 1-D:
import numpy as np
arr = np.array([1, 2, 3])
for x in arr:
print(x)
Iterowanie tablic 2-D
W tablicy 2D przejdzie przez wszystkie wiersze.
Przykład
Wykonaj iterację na elementach następującej tablicy 2-D:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x
in arr:
print(x)
Jeśli wykonamy iterację na tablicy n -D, przejdzie ona przez n-1 wymiar jeden po drugim.
Aby zwrócić rzeczywiste wartości, skalary, musimy iterować tablice w każdym wymiarze.
Przykład
Wykonaj iterację na każdym elemencie skalarnym tablicy 2-D:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
for x
in arr:
for y in x:
print(y)
Iterowanie tablic 3-D
W tablicy 3-D przejdzie przez wszystkie tablice 2-D.
Przykład
Wykonaj iterację na elementach następującej tablicy 3-D:
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9],
[10, 11, 12]]])
for x
in arr:
print(x)
Aby zwrócić rzeczywiste wartości, skalary, musimy iterować tablice w każdym wymiarze.
Przykład
Przejdź do skalarów:
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9],
[10, 11, 12]]])
for x
in arr:
for y in x:
for z in y:
print(z)
Iterowanie tablic za pomocą nditer()
Funkcja nditer()
jest funkcją pomocniczą, której można używać od bardzo podstawowych do bardzo zaawansowanych iteracji. Rozwiązuje kilka podstawowych problemów, z którymi mamy do czynienia w iteracji, przejrzyjmy to na przykładach.
Iteracja na każdym elemencie skalarnym
W podstawowych for
pętlach, iterując przez każdy skalar tablicy, musimy użyć
n
for
pętli, które mogą być trudne do zapisania dla tablic o bardzo dużej wymiarowości.
Przykład
Przejdź przez następującą tablicę 3D:
import numpy as np
arr = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
for x in np.nditer(arr):
print(x)
Tablica iteracyjna z różnymi typami danych
Możemy użyć op_dtypes
argumentu i przekazać mu oczekiwany typ danych, aby zmienić typ danych elementów podczas iteracji.
NumPy nie zmienia typu danych elementu in-place (gdzie element jest w tablicy), więc potrzebuje trochę innej przestrzeni do wykonania tej akcji, ta dodatkowa przestrzeń nazywa się buffer, a żeby ją włączyć nditer()
przekazujemy flags=['buffered']
.
Przykład
Przeprowadź iterację po tablicy jako ciąg:
import numpy as np
arr = np.array([1, 2, 3])
for x in
np.nditer(arr, flags=['buffered'], op_dtypes=['S']):
print(x)
Iteracja z różnymi rozmiarami kroku
Możemy użyć filtrowania i następującej po nim iteracji.
Przykład
Wykonaj iterację przez każdy element skalarny tablicy 2D, pomijając 1 element:
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for x in np.nditer(arr[:, ::2]):
print(x)
Wyliczona iteracja przy użyciu ndenumerate()
Wyliczenie oznacza wymienianie numeru sekwencyjnego czegoś jeden po drugim.
Czasami podczas iteracji wymagamy odpowiedniego indeksu elementu, ndenumerate()
metoda może być używana dla tych przypadków użycia.
Przykład
Wymień następujące elementy tablic 1D:
import numpy as np
arr = np.array([1, 2, 3])
for idx, x in
np.ndenumerate(arr):
print(idx, x)
Przykład
Wymień następujące elementy tablicy 2D:
import numpy as np
arr = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
for idx, x in np.ndenumerate(arr):
print(idx, x)