НумПи Броадцастинг

Numpi Broadcasting



Низови различите величине се не могу додавати, одузимати или на други начин користити у аритметици. Умножавање низа малих да би се добиле исте димензије и величина као и већи низ је један приступ. Када спроводите аритметику низа, НумПи нуди функцију познату као емитовање низа која може значајно скратити и поједноставити ваш код. Научићете о идеји емитовања низа и како да га користите у НумПи-у у овом водичу. Поред тога, постоји неколико примера програма.

Шта је НумПи Броадцастинг?

Када изводи аритметичке операције на низовима различитих облика, НумПи ово назива емитовањем. Ове операције низа се често спроводе на одговарајућим елементима. Ако два низа имају исти облик, то се може лако урадити на њима. Иако је овај концепт користан, емитовање се не препоручује увек јер може довести до неефикасне употребе меморије која успорава рачунање. НумПи операције се често изводе на паровима низова који су рашчлањени елемент по елемент.

Правила емитовања

Приликом емитовања мора се поштовати одређени скуп смерница. Они су описани у наставку:







  1. Облик низа нижег ранга је важно да се дода 1с све док оба облика низа не деле исту дужину ако два низа немају исти ранг.
  2. Два низа се сматрају компатибилним ако имају исту величину димензије или ако један од њих има величину димензије постављену на 1.
  3. Низови се могу емитовати заједно само ако се њихове величине и димензије поклапају.
  4. Када се емитовање заврши, сваки низ се понаша као да се његов облик поклапа са обликом највећег елемента у облицима два улазна низа.
  5. Један од низова се понаша као да је реплициран са том димензијом ако други низ има димензију већу од 1, а први низ има димензију 1.

Хајде сада да размотримо неке примере имплементације концепта емитовања.



Пример 1:

На паровима низова, НумПи операције се обично изводе елемент по елемент. Два низа морају, у најједноставнијем сценарију, имати исти облик, као у примеру испод:



увоз нумпи

оне_арр = нумпи. низ ( [ 2.0 , 3.0 , 1.0 ] )

тво_арр = нумпи. низ ( [ 3.0 , 3.0 , 3.0 ] )

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





Као што можете видети из кода изнад, имамо два низа: „оне_арр“ и „тво_ арр“. Сваки од њих има посебан скуп вредности. Вредности у „оне_арр“ су [2.0,3.0,1.0] и „два _арр“ су [3.0,3.0,3.0]. Тада можете видети да је резултат израчунавања производа ова два низа следећи:



Када форме низова испуне одређене захтеве, НумПи-јево правило емитовања смањује ово ограничење. Када се низ и скаларна вредност споје у операцију, емитовање се демонстрира у свом најосновнијем облику. Као што видите, 3 се налази у променљивој под називом „тво_арр.“

увоз нумпи

оне_арр = нумпи. низ ( [ 2.0 , 3.0 , 1.0 ] )

тво_арр = 3.0

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

Горњи код даје следећи резултат.

У претходном примеру, где је „тво_арр“ био низ, исход је еквивалентан. Можемо замислити да се скалар „тво_арр“ проширује током аритметичког процеса у низ који има исти облик као „један _арр“. Низ „тво_арр“ садржи нове елементе који су само дупликати првог скалара. Поређење истезања је само хипотетичко. Да би операције емитовања биле што меморијске и рачунарски економичне, НумПи је довољно паметан да користи оригиналну скаларну вредност уместо да производи копије.

Пример 2:

Ево још једног једноставног Питхон програма који врши емитовање. Још једном, креирају се два низа који садрже различите вредности. Неопходно је преобликовати 'фирст_арр' у вектор колоне са обликом 3×1 да би се израчунао спољни производ. Након тога, емитовање се изводи против 'сецонд_арр' да би се обезбедио резултат величине 3×2, познат као спољни производ 'фирст_арр' и 'сецонд_арр'. Емитовање на 2×3 је могуће пошто 'ресулт_арр' има облик 2 ×3 као и облик (3,).

Након праћења свих горе наведених корака, вектор мора бити укључен у сваку колону матрица које су „ресулт_арр“ и „сецонд_арр“. Оне имају димензије 2×3 и (2, ). Транспоновање „ресулт_арр“ ће дати облик 3×2, који се затим може емитовати против „сецонд_арр“ да би се добио исти облик. Обично, транспоновањем се добија коначни производ у облику 2×3.

увоз нумпи

фирст_арр = нумпи. низ ( [ 12 , 24 , 14 ] )

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

принт ( нумпи. преобликовати ( фирст_арр , ( 3 , 1 ) ) * сецонд_арр )

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

принт ( ресулт_арр + фирст_арр )

принт ( ( ресулт_арр. Т + сецонд_арр ) . Т )

принт ( ресулт_арр + нумпи. преобликовати ( сецонд_арр , ( два , 1 ) ) )

принт ( ресулт_арр * два )

Исход можете погледати испод.

Пример 3:

Тродимензионални низ се може емитовати коришћењем следећег Питхон програма. У овом примеру, генерисана су два низа под називом „фирст_арр“ и „сецонд_арр“. Низ „фирст_арр“ садржи [4,13,26,12] вредности, а „сецонд_арр“ садржи [32,67,45,17] вредности. 2-димензије почетног низа чине разлику. Збир првог и другог низа биће приказан испод након што се код изврши. Можете видети да имамо три изјаве за штампање у коду, од којих свака приказује текст „Први низ:“, „Други низ“ и „Трећи низ:“. Затим је приказан збир ова два новогенерисана низа.

увоз нумпи

фирст_арр = нумпи. низ ( [ [ 4 , 13 , 26 , 12 ] , [ 32 , 67 , Четири, пет , 17 ] ] )

сецонд_арр = нумпи. низ ( [ 24 , Четири, пет , 66 , 87 ] )

принт ( ' Први низ: ' )

принт ( фирст_арр )

принт ( ' Други низ: ' )

принт ( сецонд_арр )

принт ( ' Збир првог и другог низа: ' )

сума_ресулт = први_арр + други_арр ;

принт ( сума_ресулт )

Овде је излазни снимак екрана датог кода.

Пример 4:

Овде је дат последњи Питхон програм који емитује тродимензионални низ. У овом програму су наведена два низа, од којих први има три димензије. Збир првог и другог низа биће приказан као што је приказано изнад након што се код изврши. Иако се вредности у овим низовима разликују, преостали код је исти као онај који се користи у примеру програма горе.

увоз нумпи

фирст_арр = нумпи. низ ( [ [ 12 , Четири, пет , 22 , 13 ] , [ 22 , 54 , 25 , 12 ] , [ педесет , 40 , 18 , 26 ] ] )

сецонд_арр = нумпи. низ ( [ 12 , 44 , 22 , 12 ] )

принт ( ' Први низ: ' )

принт ( фирст_арр )

принт ( ' Други низ: ' )

принт ( сецонд_арр )

принт ( ' Збир првог и другог низа: ' )

сума_ресулт = први_арр + други_арр ;

принт ( сума_ресулт )

На слици испод можете видети да је представљен 3-димензионални низ из првог низа, а затим дводимензионални низ из другог низа и резултат ова два низа који користе принцип емитовања.

Закључак

Овај чланак говори о емитовању, кључном концепту Пајтона. У НумПи-у, термин 'емитовање' се односи на способност руковања низовима различитих облика док се изводе аритметичке операције које се често изводе. Горе поменута тема је детаљно обрађена разним примерима. Овај чланак је користио поменуте примере програма да покаже како се емитује на 1-Д, 2-Д и 3-Д низовима, респективно. Можете покушати да покренете ове примере на свом систему и погледате резултате да бисте боље разумели како све уопште функционише.