Излъчване на NumPy

Izl Cvane Na Numpy



Масивите с различни размери не могат да бъдат добавяни, изваждани или използвани по друг начин в аритметиката. Дублирането на масива от малки, за да му се дадат същите размери и размер като по-големия масив, е един подход. Когато извършвате аритметика на масиви, NumPy предлага функция, известна като излъчване на масиви, която може значително да съкрати и опрости вашия код. Ще научите за идеята за излъчване на масиви и как да го използвате в NumPy в този урок. Освен това са предоставени няколко примерни програми.

Какво е NumPy Broadcasting?

Когато извършва аритметични операции върху масиви с различни форми, NumPy нарича това излъчване. Тези операции с масиви често се извършват върху съответните елементи. Ако два масива имат еднаква форма, това може да се направи върху тях с лекота. Въпреки че тази концепция е полезна, излъчването не винаги се препоръчва, защото може да доведе до неефективно използване на паметта, което забавя изчислението. Операциите на NumPy често се извършват върху двойки масиви, които са разбити елемент по елемент.

Правила за излъчване

При излъчване трябва да се спазва определен набор от указания. Те са описани по-долу:







  1. Формата на масива с по-нисък ранг е важно да се добави с 1s, докато и двете форми на масивите споделят еднаква дължина, ако два масива нямат еднакъв ранг.
  2. Два масива се считат за съвместими, ако имат еднакъв размер на измерението или ако размерът на единия от тях е зададен на 1.
  3. Масивите могат да се излъчват заедно само ако техните размери и размери съвпадат.
  4. След като излъчването приключи, всеки масив действа така, сякаш формата му съвпада с тази на най-големия елемент във формите на двата входни масива.
  5. Един от масивите се държи така, сякаш е репликиран с това измерение, ако другият масив има измерение, по-голямо от 1, а първият масив има измерение 1.

Сега нека обсъдим някои примери за прилагане на концепцията за излъчване.



Пример 1:

На двойки масиви операциите на NumPy обикновено се извършват елемент по елемент. Двата масива трябва, в най-простия сценарий, да имат еднаква форма, както в примера по-долу:



импортиране numpy

one_arr = numpy. масив ( [ 2.0 , 3.0 , 1.0 ] )

two_arr = numpy. масив ( [ 3.0 , 3.0 , 3.0 ] )

печат ( един_арр * два_арр )





Както можете да видите от кода по-горе, имаме два масива: ‘one_arr’ и ‘two_ arr’. Всяка от които има отделен набор от стойности. Стойностите в „one_arr“ са [2.0,3.0,1.0] и „two _arr“ са [3.0,3.0,3.0]. След това можете да видите, че резултатът от изчисляването на произведението на тези два масива е както следва:



Когато определени изисквания са изпълнени от формите на масивите, правилото за излъчване на NumPy намалява това ограничение. Когато масив и скаларна стойност се съединят в операция, излъчването се демонстрира в най-основната му форма. Както можете да видите, 3 се съдържа в променливата с име ‘two_arr.’

импортиране numpy

one_arr = numpy. масив ( [ 2.0 , 3.0 , 1.0 ] )

two_arr = 3.0

печат ( един_арр * два_арр )

Горният код дава следния резултат.

В предходния пример, където ‘two_arr’ беше масив, резултатът е еквивалентен. Можем да си представим, че скаларът „two_arr“ се разширява по време на аритметичния процес в масив със същата форма като „one _arr“. Масивът „two_arr“ съдържа нови елементи, които са просто дубликати на първия скалар. Сравнението с разтягане е само хипотетично. За да направи операциите по излъчване като памет и изчислително икономични, колкото е възможно, NumPy е достатъчно умен, за да използва оригиналната скаларна стойност, вместо да създава копия.

Пример 2:

Ето още една проста програма на Python, която извършва излъчване. Отново се създават два масива, съдържащи различни стойности. Необходимо е да се преоформи ‘first_arr’ във вектор на колона с форма 3×1, за да се изчисли външен продукт. След това излъчването се извършва спрямо „second_arr“, за да се осигури резултат с размер 3×2, известен като външен продукт на „first_arr“ и „second_arr.“ Излъчването до 2×3 е възможно, тъй като „result_arr“ има формата 2 ×3, както и формата (3,).

След като следвате всички гореспоменати стъпки, вектор трябва да бъде включен във всяка колона на матриците, които са „result_arr“ и „second_arr“. Те имат размери 2×3 и (2, ). Транспонирането на „result_arr“ ще даде форма от 3×2, която след това може да бъде излъчена срещу „second_arr“, за да се получи същата форма. Обикновено транспонирането на това дава краен продукт във формата 2×3.

импортиране numpy

first_arr = numpy. масив ( [ 12 , 24 , 14 ] )

втори_арр = numpy. масив ( [ петнадесет , 22 ] )

печат ( numpy. преформатирайте ( first_arr , ( 3 , 1 ) ) * втори_арр )

резултат_обр = numpy. масив ( [ [ 12 , 22 , 31 ] , [ петнадесет , 22 , Четири пет ] ] )

печат ( резултат_арр + първи_арр )

печат ( ( резултат_обр. T + втори_арр ) . T )

печат ( result_arr + numpy. преформатирайте ( втори_арр , ( две , 1 ) ) )

печат ( резултат_арр * две )

Можете да видите резултата по-долу.

Пример 3:

Триизмерен масив може да бъде излъчен с помощта на следната програма на Python. В този пример са генерирани два масива с име „first_arr“ и „second_arr“. Масивът „first_arr“ съдържа [4,13,26,12] стойности, а „second_arr“ съдържа [32,67,45,17] стойности. 2-измерностите на първоначалния масив имат значение. Сумата на първия и втория масив ще бъде показана по-долу, след като кодът бъде изпълнен. Можете да видите, че имаме три израза за печат в кода, всеки от които показва текста „Първи масив:“, „Втори масив“ и „Трети масив:“ на свой ред. След това се показва сумата от тези два новогенерирани масива.

импортиране numpy

first_arr = numpy. масив ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Четири пет , 17 ] ] )

втори_арр = numpy. масив ( [ 24 , Четири пет , 66 , 87 ] )

печат ( ' Първи масив: ' )

печат ( first_arr )

печат ( ' Втори масив: ' )

печат ( втори_арр )

печат ( ' Сумата от първия и втория масив: ' )

сума_резултат = first_arr + second_arr ;

печат ( сума_резултат )

Ето изходната екранна снимка на дадения код.

Пример 4:

Тук е дадена последната програма на Python, която излъчва триизмерен масив. В тази програма са зададени два масива, първият от които има три измерения. Сумата на първия и втория масив ще бъде показана, както е показано по-горе, след като кодът бъде изпълнен. Въпреки че стойностите в тези масиви варират, останалият код е същият като този, използван в примерната програма по-горе.

импортиране numpy

first_arr = numpy. масив ( [ [ 12 , Четири пет , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ петдесет , 40 , 18 , 26 ] ] )

втори_арр = numpy. масив ( [ 12 , 44 , 22 , 12 ] )

печат ( ' Първи масив: ' )

печат ( first_arr )

печат ( ' Втори масив: ' )

печат ( втори_арр )

печат ( ' Сумата от първия и втория масив: ' )

сума_резултат = first_arr + second_arr ;

печат ( сума_резултат )

Можете да видите на фигурата по-долу, че е представен 3-измерен масив от първия масив, последван от 2-измерен масив от втория масив и резултатът от тези два, използващи принципа на излъчване.

Заключение

Тази статия обсъжда излъчването, ключова концепция на Python. В NumPy терминът „излъчване“ се отнася до капацитета за обработка на масиви с различни форми, докато се извършват аритметични операции, които се изпълняват често. Гореспоменатата тема е обстойно покрита с различни примери. Тази статия използва споменатите примерни програми, за да демонстрира как да излъчва съответно на 1-D, 2-D и 3-D масиви. Можете да опитате да стартирате тези примери на вашата система и да видите резултатите, за да разберете по-добре как всичко функционира като цяло.