Zmiana kształtu tablicy NumPy
Przekształcanie tablic
Zmiana kształtu oznacza zmianę kształtu tablicy.
Kształt tablicy to liczba elementów w każdym wymiarze.
Przekształcając możemy dodawać lub usuwać wymiary lub zmieniać liczbę elementów w każdym wymiarze.
Zmień kształt z 1-D na 2-D
Przykład
Przekształć następującą tablicę 1-D z 12 elementami na tablicę 2-D.
Najbardziej zewnętrzny wymiar będzie miał 4 tablice, każda z 3 elementami:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12])
newarr = arr.reshape(4, 3)
print(newarr)
Zmień kształt z 1-D do 3-D
Przykład
Przekształć następującą tablicę 1-D z 12 elementami na tablicę 3-D.
Najbardziej zewnętrzny wymiar będzie miał 2 tablice zawierające 3 tablice, każda z 2 elementami:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12])
newarr = arr.reshape(2, 3, 2)
print(newarr)
Czy możemy zmienić kształt w dowolny kształt?
Tak, o ile elementy wymagane do przekształcenia są równe w obu kształtach.
Możemy przekształcić 8-elementową tablicę 1D w 4 elementy w 2-rzędowej tablicy 2D, ale nie możemy przekształcić jej w 3-elementową 3-rzędową tablicę 2D, ponieważ wymagałoby to 3x3 = 9 elementów.
Przykład
Spróbuj przekonwertować tablicę 1D z 8 elementami na tablicę 2D z 3 elementami w każdym wymiarze (zgłosi błąd):
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)
Zwraca Kopiować czy przeglądać?
Przykład
Sprawdź, czy zwrócona tablica jest kopią czy widokiem:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)
Powyższy przykład zwraca oryginalną tablicę, więc jest to widok.
Nieznany wymiar
Możesz mieć jeden „nieznany” wymiar.
Oznacza to, że nie musisz określać dokładnej liczby dla jednego z wymiarów w metodzie zmiany kształtu.
Podaj -1
jako wartość, a NumPy obliczy tę liczbę za Ciebie.
Przykład
Konwertuj tablicę 1D z 8 elementami na tablicę 3D z elementami 2x2:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)
Uwaga: nie możemy przejść -1
do więcej niż jednego wymiaru.
Spłaszczanie tablic
Spłaszczenie tablicy oznacza przekształcenie tablicy wielowymiarowej w tablicę 1D.
Możemy reshape(-1)
to zrobić.
Przykład
Przekształć tablicę w tablicę 1D:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr
= arr.reshape(-1)
print(newarr)
Uwaga: Istnieje wiele funkcji służących do zmiany kształtów tablic w numpy flatten
, ravel
a także do zmiany kolejności elementów rot90
, flip
, fliplr
, flipud
itp. Te należą do sekcji Średniozaawansowany na Zaawansowany w numpy.