Numpy Broadcasting

Numpy Broadcasting
Tablii o różnych rozmiarach nie można dodawać, odejmować lub w inny sposób stosowane w arytmetyce. Duplikatem mała, aby nadać mu takie same wymiary i rozmiar, jak większa tablica to jedno podejście. Podczas prowadzenia arytmetyki tablicy Numpy oferuje funkcję znaną jako Broadcasting, która może znacznie skrócić i uprościć kod. Dowiesz się o idei transmisji tablicy i jak używać go w Numpy w tym samouczku. Dodatkowo podano kilka przykładowych programów.

Co to jest nadawanie Numpy?

Podczas wykonywania operacji arytmetycznych na tablicy różnych form, Numpy nazywa to transmisją. Te operacje macierzy są często przeprowadzane na odpowiednich elementach. Jeśli dwie tablice mają ten sam kształt, można to z łatwością zrobić. Chociaż ta koncepcja jest przydatna, nadawanie nie zawsze jest zalecane, ponieważ może powodować nieefektywne zużycie pamięci, które spowalnia obliczenia. Operacje Numpy są często wykonywane na parach tablic, które są rozbite elementem według elementu.

Zasady nadawania

Podczas transmisji należy przestrzegać określonego zestawu wytycznych. Są one opisane poniżej:

  1. Kształt tablicy dolnej rangi jest ważny do przygotowania z 1s, dopóki oba kształty tablic dzielą tę samą długość, jeśli dwie tablice nie mają takiej samej rangi.
  2. Dwie tablice są uważane za kompatybilne, jeśli mają ten sam rozmiar wymiaru lub jeśli jeden z nich ma rozmiar wymiaru na 1.
  3. Tablice można nadawać tylko wtedy, gdy ich rozmiary i wymiary pasują.
  4. Po zakończeniu transmisji każda tablica działa tak, jakby jej forma pasuje do największego elementu w kształtach dwóch tablic wejściowych.
  5. Jedna z tablic zachowuje się tak, jakby została powtórzona tym wymiarem, jeśli druga tablica ma wymiar większy niż 1, a pierwsza tablica ma wymiar 1.

Omówmy teraz kilka przykładów wdrażania koncepcji nadawania.

Przykład 1:

Na parach tablic operacje Numpy są zwykle przeprowadzane. Dwie tablice muszą, w najprostszym scenariuszu, mieć taki sam kształt, jak w poniższym przykładzie:

Importuj Numpy
One_ARR = Numpy.tablica ([2.0, 3.0, 1.0])
Two_arr = Numpy.tablica ([3.0, 3.0, 3.0])
print (one_arr * Two_arr)

Jak widać z powyższego kodu, mamy dwie tablice: „One_arr” i „Two_ arr”. Z których każdy ma osobny zestaw wartości. Wartości w „One_ARR” to [2.0,3.0,1.0] i „Two _ARR” są [3.0,3.0,3.0]. Możesz następnie zobaczyć, że wynik obliczenia iloczyn tych dwóch tablic jest następujący:

Gdy formularze tablic spełniają pewne wymagania, reguła nadawcza Numpy obniża to ograniczenie. Gdy w operacji łączą się tablicę i wartość skalarną, transmisja jest demonstrowana w najbardziej podstawowej formie. Jak widać, 3 jest zawarte w zmiennej o nazwie „Two_arr.'

Importuj Numpy
One_ARR = Numpy.tablica ([2.0, 3.0, 1.0])
Two_arr = 3.0
print (one_arr * Two_arr)

Powyższy kod daje następujący wynik.

W poprzednim przykładzie, w którym „Two_arr” był tablicą, wynik jest równoważny. Możemy wyobrazić sobie skalar „dwa_arki” rozszerzone podczas procesu arytmetycznego na tablicę o takim samym kształcie co „jeden _arr.„Tablica„ Two_arr ”zawiera nowe elementy, które są jedynie duplikatami pierwszego skalarnego. Porównanie rozciągania jest jedynie hipotetyczne. Aby operacje transmisji jako pamięci i obliczeniowo ekonomiczne jako wykonalne, Numpy jest wystarczająco inteligentny, aby użyć oryginalnej wartości skalarnej, a nie tworzenie kopii.

Przykład 2:

Oto kolejny prosty program Python, który wykonuje transmisję. Ponownie tworzone są dwie tablice zawierające różne wartości. Konieczne jest przekształcenie „First_arr” w wektor kolumny o kształcie 3 × 1, aby obliczyć produkt zewnętrzny. Następnie transmisja jest wykonywana przeciwko „Second_arr”, aby zapewnić wynik rozmiaru 3 × 2, znany jako produkt zewnętrzny „First_arr” i „Second_arr.„Nadawanie do 2 × 3 jest możliwe, ponieważ„ Result_ARR ”ma kształt 2 × 3, a także kształt (3,).

Po wykonaniu wszystkich wyżej wymienionych kroków wektor musi być zawarty w każdej kolumnie macierzy, które są „reset_arr” i „Second_arr.„Mają wymiary 2 × 3 i (2). Transponowanie „Result_ARR” da kształt 3 × 2, który można następnie nadawać przeciwko „Second_ARR”, aby uzyskać tę samą formę. Zazwyczaj transponowanie tego daje produkt końcowy w kształcie 2 × 3.

Importuj Numpy
First_arr = Numpy.tablica ([12, 24, 14])
second_arr = Numpy.tablica ([15, 22])
Drukuj (Numpy.Reshape (First_arr, (3, 1)) * Second_ARr)
Result_ARR = Numpy.tablica ([[12, 22, 31], [15, 22, 45]])
print (wynik_arr + First_arr)
wydrukować ((wynik_arki.T + second_arr).T)
Drukuj (result_arr + numpy.Reshape (second_arr, (2, 1)))
print (wynik_arku * 2)

Możesz wyświetlić dane wyjściowe poniżej.

Przykład 3:

Trójwymiarową tablicę można nadawać za pomocą następującego programu Python. W tym przykładzie wygenerowano dwie tablice o nazwie „First_arr” i „second_arr”. Tablica „First_arr” zawiera wartości [4,13,26,12], a „Second_ARR” zawiera wartości [32 67,45,17]. Początkowe 2-dimensions ma znaczenie. Suma pierwszej i drugiej tablicy zostanie pokazana poniżej po wykonaniu kodu. Widać, że mamy trzy instrukcje drukowania w kodzie, z których każdy wyświetla tekst „Pierwsza tablica:”, „Druga tablica” i „trzecia tablica:”. Następnie pokazano sumę tych dwóch nowo wygenerowanych tablic.

Importuj Numpy
First_arr = Numpy.tablica ([[4, 13, 26, 12], [32, 67, 45, 17]])
second_arr = Numpy.tablica ([24,45,66,87])
Drukuj („\ n Pierwsza tablica:”)
Drukuj (First_arr)
Drukuj („\ n Druga tablica:”)
Drukuj (Second_ARR)
Drukuj („\ nsum z pierwszej i drugiej tablicy:”)
sum_Result = First_arr + second_arr;
druk (sum_result)

Oto zrzut ekranu wyjściowego danego kodu.

Przykład 4:

Ostatni program Python, który nadaje trójwymiarową tablicę, podano tutaj. W tym programie określono dwie tablice, z których pierwszy ma trzy wymiary. Suma pierwszej i drugiej tablicy zostanie pokazana, jak pokazano powyżej po wykonaniu kodu. Chociaż wartości w tych tablicach różnią się, pozostały kod jest taki sam, jak używany w powyższym przykładowym programie.

Importuj Numpy
First_arr = Numpy.tablica ([[12, 45, 22, 13], [22, 54, 25, 12], [50, 40, 18, 26]]))
second_arr = Numpy.tablica ([12,44,22,12])
Drukuj („\ n Pierwsza tablica:”)
Drukuj (First_arr)
Drukuj („\ n Druga tablica:”)
Drukuj (Second_ARR)
Drukuj („\ nsum z pierwszej i drugiej tablicy:”)
sum_Result = First_arr + second_arr;
druk (sum_result)

Na poniższym rysunku można zobaczyć, że przedstawiono 3-wymiarową tablicę z pierwszej tablicy, a następnie dwupoziomowa tablica z drugiej tablicy i wyniku tych dwóch zastosujących zasadę nadawania.

Wniosek

W tym artykule omówiono transmisję, kluczową koncepcję Pythona. W Numpy termin „nadawanie” odnosi się do zdolności do obsługi tablic o różnych kształtach podczas wykonywania często wykonywanych operacji arytmetycznych. Wspomniany przedmiot został dokładnie pokryty różnymi przykładami. W tym artykule wykorzystano wspomniane przykładowe programy, aby zademonstrować, jak nadawać odpowiednio na tablicach 1-D, 2-D i 3-D. Możesz spróbować uruchomić te przykłady w systemie i wyświetlić wyniki, aby lepiej zrozumieć, jak wszystko funkcjonuje ogólnie.