
Podczas pracy z biblioteką NumPy w języku Python często musimy operować na tablicach wielowymiarowych i przekształcać je w jednowymiarowe struktury. Jednym z najwygodniejszych sposobów na „spłaszczenie” tablicy jest wykorzystanie funkcji numpy.ravel()
. W tym artykule wyjaśnię szczegółowo, jak działa numpy.ravel()
i pokażę konkretne przykłady jego zastosowania.
Co robi funkcja numpy.ravel()?
Funkcja numpy.ravel()
zwraca jednowymiarową wersję wejściowej tablicy. Można ją traktować jako sposób na „spłaszczenie” tablicy do postaci wektora. Co ważne, jeśli to możliwe, zwracany obiekt jest widokiem (view) na oryginalne dane, a nie ich kopią.
Podstawowa składnia wygląda następująco:
numpy.ravel(a, order='C')
a
– wejściowa tablica NumPy.order
– określa kolejność spłaszczania:'C'
– wierszowa (C-style, domyślnie).'F'
– kolumnowa (Fortran-style).'A'
– według pamięci (C- lub F-style, zależnie od układu danych).'K'
– zgodnie z kolejnością w pamięci.
Podstawowy przykład numpy.ravel()
Przyjrzyjmy się prostemu przykładowi:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
flattened = np.ravel(arr)
print(flattened)
Wynik:
[1 2 3 4 5 6]
Różnice między numpy.ravel() a numpy.flatten()
Funkcja numpy.ravel()
jest często mylona z numpy.flatten()
. Główna różnica polega na tym, że:
numpy.ravel()
zwraca widok, jeśli to możliwe (nie tworzy nowej kopii).numpy.flatten()
zawsze zwraca kopię tablicy.
Przykład ilustrujący różnicę:
arr = np.array([[1, 2], [3, 4]])
ravel_view = arr.ravel()
flatten_copy = arr.flatten()
ravel_view[0] = 99 # Zmiana wartości w widoku
print(arr) # Oryginalna tablica też się zmienia
print(flatten_copy) # Kopia pozostaje bez zmian
Wynik:
[[99 2]
[ 3 4]]
[1 2 3 4]
Spłaszczanie tablicy w różnych porządkach
Możemy określić sposób, w jaki tablica zostanie spłaszczona, np. wierszowo ('C'
) lub kolumnowo ('F'
):
arr = np.array([[1, 2], [3, 4]])
print(np.ravel(arr, order='C')) # Wierszowo
print(np.ravel(arr, order='F')) # Kolumnowo
Wynik:
[1 2 3 4]
[1 3 2 4]
Podsumowanie
Funkcja numpy.ravel()
jest niezwykle użyteczna podczas pracy z danymi w NumPy. Jej główne zalety to:
- Szybkie przekształcenie tablicy wielowymiarowej do jednowymiarowej.
- Optymalizacja pamięci – zwraca widok, jeśli to możliwe.
- Możliwość określenia kolejności spłaszczania.
Jeśli zależy nam na utworzeniu niezależnej kopii tablicy, powinniśmy użyć numpy.flatten()
. Jednak w większości przypadków numpy.ravel()
będzie lepszym wyborem ze względu na wydajność.
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.