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 -1jako 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ść -1do 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, ravela także do zmiany kolejności elementów rot90, flip, fliplr, flipuditp. Te należą do sekcji Średniozaawansowany na Zaawansowany w numpy.


Sprawdź się za pomocą ćwiczeń

Ćwiczenie:

Użyj poprawnej metody NumPy, aby zmienić kształt tablicy z 1-D na 2-D.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)