Atrybuty tablic i ich inspekcja
Poznawać atrybuty ndim, shape, size i dtype oraz uczyć się zmieniać kształt tablicy za pomocą reshape()
Atrybuty tablic i ich inspekcja to bezpłatna lekcja Pandas & NumPy Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Pandas & NumPy Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.
Dlaczego atrybuty tablic mają znaczenie
Przed rozpoczęciem pracy z tablicą warto znać jej shape, wymiary i dtype. NumPy udostępnia te informacje natychmiast za pomocą lekkich atrybutów.
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
print('ndim:', a.ndim) # 2
print('shape:', a.shape) # (2, 3)
print('size:', a.size) # 6
print('dtype:', a.dtype) # int64ndim: liczba wymiarów
ndim informuje, ile wymiarów ma tablica: płaska lista ma 1 wymiar, lista list ma 2, a tensory używane w uczeniu maszynowym często mają 3 lub 4.
import numpy as np
v = np.array([1, 2, 3])
print(v.ndim) # 1
m = np.zeros((4, 5))
print(m.ndim) # 2
t = np.ones((2, 3, 4))
print(t.ndim) # 3shape: krotka wymiarów
shape to krotka zawierająca jeden rozmiar dla każdego wymiaru. W przypadku tablicy 2D jest to (wiersze, kolumny) — można ją rozpakować, aby pisać elastyczny kod.
import numpy as np
a = np.arange(24).reshape(2, 3, 4)
print(a.shape) # (2, 3, 4)
n_rows, n_cols = np.zeros((5, 7)).shape
print(n_rows, n_cols) # 5 7size: całkowita liczba elementów
size zwraca całkowitą liczbę elementów — iloczyn wszystkich wartości w shape. Przydaje się do sprawdzenia, czy podczas zmiany kształtu nic nie zostało utracone.
import numpy as np
a = np.ones((3, 4, 5))
print(a.size) # 60 (3*4*5)
print(np.prod(a.shape))# 60
# Memory estimate in bytes
print(a.size * a.itemsize, 'bytes') # 480 bytesdtype: typ danych elementu
dtype opisuje typ każdego elementu, a itemsize informuje o zajmowanym przez niego rozmiarze w bajtach. Zmiana float64 na float32 zmniejsza zużycie pamięci o połowę i często przyspiesza działanie.
import numpy as np
a = np.array([1.5, 2.5, 3.5])
print(a.dtype) # float64
print(a.itemsize) # 8 bytes
b = a.astype(np.float32)
print(b.dtype) # float32
print(b.itemsize) # 4 bytesnbytes: całkowite zużycie pamięci
nbytes to całkowita ilość pamięci zajmowanej przez tablicę, wyrażona w bajtach — po prostu size pomnożone przez itemsize. Warto sprawdzić tę wartość przed i po zmniejszeniu typu, aby potwierdzić oszczędność miejsca.
import numpy as np
a = np.ones((1000, 1000), dtype=np.float64)
print(a.nbytes) # 8000000 (8 MB)
b = a.astype(np.float32)
print(b.nbytes) # 4000000 (4 MB)reshape(): zmiana kształtu tablicy
reshape nadaje tablicy nowy kształt bez kopiowania danych, o ile liczba elementów pozostaje taka sama. Po podaniu -1 NumPy sam obliczy rozmiar tego wymiaru.
import numpy as np
a = np.arange(12)
print(a.shape) # (12,)
b = a.reshape(3, 4)
print(b.shape) # (3, 4)
c = a.reshape(2, -1) # -1 inferred as 6
print(c.shape) # (2, 6)Spłaszczanie za pomocą ravel() i flatten()
Zarówno ravel(), jak i flatten() spłaszczają tablicę do 1D. Różnica polega na tym, że ravel zwykle współdzieli pamięć z oryginałem (nie tworzy kopii), natomiast flatten zawsze tworzy nową kopię.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]])
r = m.ravel() # view (usually)
f = m.flatten() # always a copy
print(r) # [1 2 3 4 5 6]
print(f) # [1 2 3 4 5 6]Transponowanie tablic
Atrybut .T zwraca transpozycję — zamienia wiersze z kolumnami. Operacja jest bezkosztowa (nie kopiuje danych) i niezbędna do prawidłowego dopasowywania macierzy.
import numpy as np
m = np.array([[1, 2, 3], [4, 5, 6]]) # shape (2, 3)
print(m.T.shape) # (3, 2)
print(m.T)
# [[1 4]
# [2 5]
# [3 6]]strides: układ danych w pamięci
strides pokazują, o ile bajtów NumPy przesuwa się w pamięci wzdłuż każdego wymiaru. Właśnie dlatego transponowanie jest bezkosztowe — zmienia jedynie wartości strides.
import numpy as np
a = np.ones((3, 4), dtype=np.float64)
print(a.strides) # (32, 8) — 4 cols x 8 bytes, 1 col x 8 bytes
b = a.T
print(b.strides) # (8, 32) — strides swapped, no data copySprawdzanie widoków i kopii
Widok współdzieli pamięć z oryginałem, więc zmiana jednego zmienia również drugi; kopia jest niezależna. Za pomocą np.shares_memory(a, b) można sprawdzić, z czym mamy do czynienia.
import numpy as np
a = np.arange(6)
b = a.reshape(2, 3) # view
print(np.shares_memory(a, b)) # True
c = a.copy()
print(np.shares_memory(a, c)) # FalseSzybki test
Sprawdź swoją wiedzę na temat atrybutów tablic NumPy z tego rozdziału.
Podsumowanie rozdziału
Świetne postępy! ndim, shape i size opisują strukturę, dtype opisuje dane, reshape zwraca widok, a flatten zawsze tworzy kopię. Następny temat: działania na tablicach.
Często zadawane pytania
Czy lekcja „Atrybuty tablic i ich inspekcja” jest bezpłatna?
Tak — pełny tekst „Atrybuty tablic i ich inspekcja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Pandas & NumPy Academy, przejdź na CoddyKit PRO. Kurs Pandas & NumPy Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Atrybuty tablic i ich inspekcja”?
Poznawać atrybuty ndim, shape, size i dtype oraz uczyć się zmieniać kształt tablicy za pomocą reshape() Ćwiczysz Pandas & NumPy Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Pandas & NumPy Academy?
Nie wymagamy żadnego doświadczenia. Pandas & NumPy Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Atrybuty tablic i ich inspekcja”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Pandas & NumPy Academy?
Tak. Każda lekcja Pandas & NumPy Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tworzenie tablic NumPy
- Atrybuty tablic i ich inspekcja
- Działania arytmetyczne element po elemencie
- Wycinanie i indeksowanie tablic