Transmisja NumPy

Transmisja Numpy



Tablice o różnych rozmiarach nie mogą być dodawane, odejmowane ani w inny sposób używane w arytmetyce. Jednym z podejść jest zduplikowanie małej tablicy, aby nadać jej takie same wymiary i rozmiar jak większa tablica. Podczas wykonywania arytmetyki tablicowej NumPy oferuje funkcję znaną jako rozgłaszanie tablicowe, która może znacznie skrócić i uprościć kod. W tym samouczku dowiesz się o idei rozgłaszania tablicy i jak go używać w NumPy. Dodatkowo udostępniono kilka przykładowych programów.

Co to jest nadawanie NumPy?

Podczas wykonywania operacji arytmetycznych na tablicach o różnych formach NumPy nazywa to rozgłaszaniem. Te operacje na tablicach są często wykonywane na odpowiednich elementach. Jeśli dwie tablice mają ten sam kształt, można to zrobić z łatwością. Mimo że ta koncepcja jest przydatna, rozgłaszanie nie zawsze jest zalecane, ponieważ może powodować nieefektywne wykorzystanie pamięci, co spowalnia obliczenia. Operacje NumPy są często wykonywane na parach tablic, które są podzielone element po elemencie.

Zasady nadawania

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







  1. Ważne jest, aby kształt tablicy niższego rzędu był poprzedzony jedynkami, dopóki oba kształty tablic nie będą miały tej samej długości, jeśli dwie tablice nie mają tej samej rangi.
  2. Dwie tablice są uważane za zgodne, jeśli mają ten sam rozmiar wymiaru lub jeśli jedna z nich ma rozmiar wymiaru ustawiony na 1.
  3. Tablice mogą być rozgłaszane razem tylko wtedy, gdy ich rozmiary i wymiary są zgodne.
  4. Po zakończeniu rozgłaszania każda tablica zachowuje się tak, jakby jej forma pasowała do największego elementu w kształtach dwóch tablic wejściowych.
  5. Jedna z tablic zachowuje się tak, jakby została zreplikowana z 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 realizacji koncepcji nadawania.



Przykład 1:

Na parach tablic operacje NumPy są zwykle wykonywane element po elemencie. W najprostszym scenariuszu dwie tablice muszą mieć ten sam kształt, jak w poniższym przykładzie:



import numpy

jeden_arr = numpy. szyk ( [ 2,0 , 3,0 , 1,0 ] )

dwa_arr = numpy. szyk ( [ 3,0 , 3,0 , 3,0 ] )

wydrukować ( jeden_arr * dwa_arr )





Jak widać z powyższego kodu, mamy dwie tablice: „jeden_ar” i „dwa_ arr”. Każdy z nich ma osobny zestaw wartości. Wartości w „jeden_arr” to [2.0,3.0,1.0], a „dwa _arr” to [3.0,3.0,3.0]. Możesz wtedy zobaczyć, że wynik obliczenia iloczynu tych dwóch tablic jest następujący:



Gdy formy macierzy spełniają określone wymagania, reguła rozgłaszania NumPy obniża to ograniczenie. Kiedy tablica i wartość skalarna są połączone w operacji, rozgłaszanie jest demonstrowane w najbardziej podstawowej formie. Jak widać, 3 jest zawarte w zmiennej o nazwie „two_arr.”

import numpy

jeden_arr = numpy. szyk ( [ 2,0 , 3,0 , 1,0 ] )

dwa_arr = 3,0

wydrukować ( jeden_arr * dwa_arr )

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

W poprzednim przykładzie, gdzie „dwa_arr” było tablicą, wynik jest równoważny. Możemy sobie wyobrazić, że skalar „dwa_arr” jest rozwijany podczas procesu arytmetycznego do tablicy o takim samym kształcie jak „jeden_arr”. Tablica „dwa_arr” zawiera nowe elementy, które są jedynie duplikatami pierwszego skalara. Porównanie rozciągania jest jedynie hipotetyczne. Aby operacje rozgłaszania były jak pamięć i jak najbardziej ekonomiczne obliczeniowo, NumPy jest wystarczająco inteligentny, aby używać oryginalnej wartości skalarnej zamiast tworzyć kopie.

Przykład 2:

Oto kolejny prosty program w Pythonie, który wykonuje transmisję. Ponownie tworzone są dwie tablice zawierające różne wartości. Aby obliczyć iloczyn zewnętrzny, konieczne jest przekształcenie „first_arr” w wektor kolumnowy o kształcie 3×1. Następnie rozgłaszanie jest wykonywane względem „second_arr”, aby uzyskać wynik o rozmiarze 3×2, znany jako iloczyn zewnętrzny „first_arr” i „second_arr”. Emisja do 2×3 jest możliwa, ponieważ „result_arr” ma kształt 2 ×3 oraz kształt (3,).

Po wykonaniu wszystkich wyżej wymienionych kroków, wektor musi być zawarty w każdej kolumnie macierzy, które są ’result_arr’ i ‘second_arr’. Mają one wymiary 2×3 i (2, ). Transpozycja „result_arr” da kształt 3×2, który można następnie przesłać do „second_arr”, aby uzyskać tę samą formę. Zazwyczaj transpozycja daje produkt końcowy w kształcie 2×3.

import numpy

pierwszy_arr = numpy. szyk ( [ 12 , 24 , 14 ] )

drugi_arr = numpy. szyk ( [ piętnaście , 22 ] )

wydrukować ( numpy. przefasonować ( pierwszy_arr , ( 3 , 1 ) ) * drugi_arr )

wynik_arr = numpy. szyk ( [ [ 12 , 22 , 31 ] , [ piętnaście , 22 , Cztery pięć ] ] )

wydrukować ( wynik_arr + pierwszy_arr )

wydrukować ( ( wynik_arr. T + drugi_arr ) . T )

wydrukować ( wynik_arr + liczba. przefasonować ( drugi_arr , ( dwa , 1 ) ) )

wydrukować ( wynik_arr * dwa )

Możesz zobaczyć wyniki poniżej.

Przykład 3:

Tablicę trójwymiarową można rozgłaszać za pomocą następującego programu w języku Python. W tym przykładzie wygenerowano dwie tablice o nazwach „pierwszy_arr” i „drugi_arr”. Tablica „pierwszy_arr” zawiera [4,13,26,12] wartości, a „drugi_arr” zawiera [32,67,45,17] wartości. Różnicę mają 2 wymiary początkowej tablicy. Suma pierwszej i drugiej tablicy zostanie pokazana poniżej po wykonaniu kodu. Widać, że mamy w kodzie trzy instrukcje print, z których każda wyświetla kolejno tekst „Pierwsza tablica:”, „Druga tablica” i „Trzecia tablica:”. Następnie pokazana jest suma tych dwóch nowo wygenerowanych tablic.

import numpy

pierwszy_arr = numpy. szyk ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Cztery pięć , 17 ] ] )

drugi_arr = numpy. szyk ( [ 24 , Cztery pięć , 66 , 87 ] )

wydrukować ( ' \n Pierwsza tablica: ' )

wydrukować ( pierwszy_arr )

wydrukować ( ' \n Druga tablica: ' )

wydrukować ( drugi_arr )

wydrukować ( ' \n Suma pierwszej i drugiej tablicy: ' )

sum_wynik = pierwszy_arr + drugi_arr ;

wydrukować ( sum_wynik )

Oto zrzut ekranu wyjściowego danego kodu.

Przykład 4:

Tutaj podano ostatni program w Pythonie, który emituje trójwymiarową tablicę. W tym programie określone są dwie tablice, z których pierwsza ma trzy wymiary. Suma pierwszej i drugiej tablicy zostanie pokazana, jak pokazano powyżej, po wykonaniu kodu. Chociaż wartości w tych tablicach są różne, pozostały kod jest taki sam, jak ten użyty w powyższym przykładowym programie.

import numpy

pierwszy_arr = numpy. szyk ( [ [ 12 , Cztery pięć , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ pięćdziesiąt , 40 , 18 , 26 ] ] )

drugi_arr = numpy. szyk ( [ 12 , 44 , 22 , 12 ] )

wydrukować ( ' \n Pierwsza tablica: ' )

wydrukować ( pierwszy_arr )

wydrukować ( ' \n Druga tablica: ' )

wydrukować ( drugi_arr )

wydrukować ( ' \n Suma pierwszej i drugiej tablicy: ' )

sum_wynik = pierwszy_arr + drugi_arr ;

wydrukować ( sum_wynik )

Na poniższym rysunku widać, że prezentowana jest tablica 3-wymiarowa z pierwszej tablicy, następnie tablica 2-wymiarowa z tablicy drugiej i wynik tych dwóch z zastosowaniem zasady rozgłaszania.

Wniosek

W tym artykule omówiono rozgłaszanie, 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 temat został dokładnie omówiony na różnych przykładach. W tym artykule wykorzystano wspomniane programy przykładowe, aby zademonstrować, jak emitować odpowiednio w macierzach 1-D, 2-D i 3-D. Możesz spróbować uruchomić te przykłady w swoim systemie i wyświetlić wyniki, aby lepiej zrozumieć, jak wszystko działa w ogóle.