Blog Analityczny. Narzędzia. Techniki. Rozwiązania Analityczne.

Tablica NumPy. Szybki przegląd podstawowych operacji

07.2023 | NumPy | Operacje tablicowe | Tworzenie tablicy numpy

Pakiet NumPy, to jedno z najważniejszych narzędzi dla każdego analityka, pracującego z danymi. NumPy udostępnia efektywny obiekt tablicy n-wymiarowej, który umożliwia przeprowadzanie zaawansowanych operacji matematycznych i logicznych na dużych zestawach danych, jednocześnie zapewniając znacznie lepszą wydajność, w zakresie szybkości wykonywania operacji czy obliczeń (1).

Przyjrzyjmy się zatem podstawowym operacjom, jakie mogą być wykonane na tablicach NumPy...

Zawartość artykułu:

Podstawowe cechy tablic NumPy

Zobaczmy zatem, jak stworzyć tablicę NumPy i następnie, jak je wykorzystać do wykonywania podstawowych operacji matematycznych.

Podstawowe cechy tablicy NumPy to:

  • Homogeniczność => oznacza, że wszystkie elementy tablicy są tego samego typu, na przykład wszystkie są liczbami całkowitymi, liczbami zmiennoprzecinkowymi itp.
  • Wielowymiarowość => oznacza, że same tablice NumPy mogą mieć dowolną liczbę wymiarów, od jednowymiarowych wektorów po wielowymiarowe macierze.
  • Wysoka wydajność => osiągnięta, dzięki implementacji w języku C. Tablice NumPy są optymalizowane pod kątem szybkiego przetwarzania m.in. dzięki możliwości wykonywania operacji wektorowych.
  • Broadcasting => oznacza mechanizm, który pozwala na wykonywanie operacji na tablicach o różnych wymiarach (kształtach). W przypadku operacji binarnych, na dwóch tablicach o różnych kształtach, NumPy automatycznie rozszerza kształt mniejszej tablicy, tak aby pasował do kształtu większej tablicy.

Image: Tablice Numpy

Tworzenie tablic NumPy

Tworzenie tablic w NumPy jest intuicyjne i można być zrealizowane na kilka sposobów. Najprostszy sposób, to wykorzystanie funkcji np.array(), która tworzy tablicę z listy liczb.

Przykład kodu, tworzącego tablice NumPy, z wykorzystaniem wspomnianej funkcji np.array():

# importujemy pakiet  numpy
import numpy as np
# tworzymy jednowymiarową tablicę 
array1 = np.array([1, 2, 3, 4, 5])
print(array1)
# tworzymy dwuwymiarową tablicę
array2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(array2)

Poza wymienioną metodą, NumPy udostępnia wiele innych funkcji do tworzenia specjalnych tablic. Na przykład, funkcje np.zeros() i np.ones() tworzą tablice wypełnione odpowiednio zerami i jedynkami.

Natomiast funkcja np.eye(), tworzy tablicę z jedynkami na przekątnej i zerami w pozostałych miejscach, co jest bardzo przydatne w algebrze liniowej.

Zobaczmy przykłady:

# tworzenie tablicy wypełnionej  zerami
zeros = np.zeros((3, 3))
print(zeros)

# wynik
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
# tworzenie tablicy wypełnionej  jedynkami
ones = np.ones((3, 3))
print(ones)

# wynik
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
# tworzenie macierzy  jednostkowej
eye = np.eye(3)
print(eye)

# wynik
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

Dostęp do elementów tablicy NumPy

Dostęp do elementów tablicy w NumPy, jest podobny, do dostępu do elementów listy w Pythonie. Możemy użyć indeksów w celu dostępu do konkretnych elementów, jak również w celu tworzenia podtablic.

Przykład:

# tworzenie tablicy
array = np.array([1, 2, 3, 4, 5])
# dostęp do pierwszego  elementu
print(array[0])
# dostęp do ostatniego  elementu
print(array[-1])
# tworzenie podtablicy
sub_array = array[1:4]
print(sub_array)

Operacje matematyczne na tablicach NumPy

Jedną z najważniejszych cech NumPy jest możliwość wykonywania operacji matematycznych na tablicach. Te operacje są wykonywane element po elemencie, co oznacza, że są wykonywane na każdym elemencie rozpatrywanej tablicy.

Zobaczmy na poniższy przykład:

# tworzenie dwóch tablic
array1 = np.array([1, 2, 3, 4, 5])
array2 = np.array([6, 7, 8, 9, 10])
# dodawanie tablic
print(array1 + array2)

# wynik
[ 7  9 11 13 15]
# mnożenie tablic
print(array1 * array2)

# wynik
[ 6 14 24 36 50]
# dzielenie tablic
print(array1 / array2)

# wynik
[0.16666667 0.28571429 0.375      0.44444444 0.5       ]

Modyfikowanie kształtu tablicy NumPy

Zdarza się, że w trakcie pracy nad danymi musimy zmienić kształt tablicy, np. przekształcić tablicę jednowymiarową na dwuwymiarową. Z pomocą przychodzi nam ponownie numpy - możemy to zrobić za pomocą funkcji reshape().

# tworzenie tablicy
array = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
# zmiana kształtu tablicy na  3x3
reshaped_array = array.reshape(3, 3)
print(reshaped_array)

# wynik
[[1 2 3]
 [4 5 6]
 [7 8 9]]

Podsumowanie

NumPy to solidne narzędzie, które pozwala na wykonywanie wydajnych operacji, na dużych zestawach danych. Z uwagi na ten fakt, jest to jedna z najważniejszych bibliotek dla każdego, kto pracuje z danymi w Pythonie.<

W powyższym artykule przybliżyliśmy zupełnie podstawowe operacje, które można wykonywać na tablicach NumPy, takie jak tworzenie tablic, dostęp do elementów, operacje matematyczne oraz modyfikowanie kształtu tablicy.

Więcej informacji warto poszukać w dokumentacji pakietu.

(1) Porównanie wydajności Python vs NumPy można sprawdzić np. w poniższym artykule z serwisu Real Python: https://realpython.com/numpy-tensorflow-performance/

Pełny kod z przykładami