0Pricing
Pandas & NumPy Academy · Lekcja

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)  # int64

ndim: 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)   # 3

shape: 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 7

size: 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 bytes

dtype: 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 bytes

nbytes: 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 copy

Sprawdzanie 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))  # False

Szybki 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

  1. Tworzenie tablic NumPy
  2. Atrybuty tablic i ich inspekcja
  3. Działania arytmetyczne element po elemencie
  4. Wycinanie i indeksowanie tablic
← Powrót do Pandas & NumPy Academy