
W pracy z biblioteką NumPy w języku Python często musimy zmieniać kształt naszych tablic (array). Funkcja numpy.reshape()
pozwala nam to zrobić w prosty i elegancki sposób. Dzięki niej możemy zmieniać wielowymiarowe tablice, dostosowując rozmiary i układ danych, bez zmiany ich elementów. W tym artykule wyjaśnię, jak działa numpy.reshape()
, pokażę przykłady jego zastosowania oraz omówię potencjalne pułapki, na które warto uważać.
Podstawowa składnia numpy.reshape()
Funkcja numpy.reshape()
ma prostą składnię:
numpy.reshape(a, newshape, order='C')
Gdzie:
a
– oryginalna tablica NumPy, którą chcemy przekształcić.newshape
– nowy kształt tablicy (może to być krotka wartości lub pojedyncza liczba).order
(opcjonalne) – sposób odczytu elementów tablicy:'C'
– odczyt wierszowy (domyślnie, w stylu języka C).'F'
– odczyt kolumnowy (w stylu języka Fortran).'A'
– priorytet dla pamięci wewnętrznej.'K'
– odczyt zgodny z kolejnością pamięciową oryginalnej tablicy.
Przykład zastosowania numpy.reshape() w Pythonie
Spójrzmy na przykład, który pokazuje, jak działa numpy.reshape()
w praktyce.
import numpy as np
# Tworzymy początkową tablicę jednowymiarową
a = np.array([1, 2, 3, 4, 5, 6])
# Przekształcamy w tablicę 2x3
b = np.reshape(a, (2, 3))
print(b)
Wynik:
[[1 2 3]
[4 5 6]]
Tablica jednowymiarowa o sześciu elementach została przekształcona w tablicę dwuwymiarową o wymiarach 2×3.
Automatyczne dopasowanie wymiaru dzięki -1
Nie zawsze musimy dokładnie określać wszystkie wymiary. Możemy użyć wartości -1
, aby NumPy sam dopasował odpowiednią liczbę wierszy lub kolumn.
c = np.reshape(a, (-1, 2))
print(c)
Wynik:
[[1 2]
[3 4]
[5 6]]
NumPy automatycznie obliczył, że tablica powinna mieć 3 wiersze i 2 kolumny.
Uważaj na błędy związane z reshape
Funkcja reshape()
jest bardzo wygodna, ale ma swoje ograniczenia. Najważniejsze jest to, że liczba elementów w nowej tablicy musi zgadzać się z liczbą elementów w oryginalnej tablicy.
# To spowoduje błąd!
d = np.reshape(a, (4, 2))
Wynik:
ValueError: cannot reshape array of size 6 into shape (4,2)
Oryginalna tablica ma 6 elementów, więc nie możemy przekształcić jej w tablicę o 8 elementach.
Porównanie różnych metod reshaping w NumPy
Istnieje kilka sposobów na zmianę kształtu tablic w NumPy. Poniżej znajduje się porównanie:
Metoda | Opis |
---|---|
numpy.reshape() |
Zmienia kształt tablicy bez zmiany jej elementów. |
.shape = newshape |
Bezpośrednia zmiana kształtu oryginalnej tablicy (nie tworzy kopii). |
numpy.ravel() |
Spłaszcza tablicę do jednego wymiaru. |
numpy.flatten() |
Podobne do ravel() , ale zwraca kopię danych. |
Zmiana kolejności odczytu danych
Domyślnie numpy.reshape()
odczytuje dane wierszami, ale jeśli chcemy zmienić kolejność, możemy użyć argumentu order
.
e = np.reshape(a, (2, 3), order='F')
print(e)
Wynik:
[[1 3 5]
[2 4 6]]
Przestawienie odbyło się kolumnowo.
Podsumowanie
Funkcja numpy.reshape()
jest niezwykle przydatna, gdy pracujemy z dużymi zbiorami danych w Pythonie. Pozwala nam na wygodne modyfikowanie kształtu tablic bez kopiowania danych, co poprawia efektywność pracy z NumPy.
Warto pamiętać o kilku kluczowych aspektach:
- Nowy kształt musi mieć taką samą liczbę elementów co oryginalna tablica.
- Możemy używać
-1
, aby automatycznie dopasować jeden z wymiarów. - Argument
order
pozwala zmieniać sposób odczytu danych.
Teraz, gdy już wiesz, jak działa numpy.reshape()
w języku Python, możesz swobodnie operować tablicami NumPy i efektywnie manipulować danymi!
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.