Учебники

NumPy — вещание

Термин широковещание относится к способности NumPy обрабатывать массивы различных форм во время арифметических операций. Арифметические операции над массивами обычно выполняются с соответствующими элементами. Если два массива имеют одинаковую форму, то эти операции выполняются плавно.

Пример 1

Live Demo

import numpy as np 

a = np.array([1,2,3,4]) 
b = np.array([10,20,30,40]) 
c = a * b 
print c

Его вывод выглядит следующим образом —

[10   40   90   160]

Если размеры двух массивов различны, операции элемент-элемент невозможны. Тем не менее, в NumPy все еще возможны операции с массивами не похожих форм из-за возможности вещания. Меньший массив передается по размеру большего массива, чтобы они имели совместимые формы.

Вещание возможно при соблюдении следующих правил:

  • Массив с меньшим значением ndim, чем другой, в начале имеет «1».

  • Размер в каждом измерении выходной формы является максимальным из входных размеров в этом измерении.

  • Входные данные могут использоваться в вычислениях, если его размер в определенном измерении соответствует выходному размеру или его значение точно равно 1.

  • Если вход имеет размерность измерения 1, первая запись данных в этом измерении используется для всех вычислений в этом измерении.

Массив с меньшим значением ndim, чем другой, в начале имеет «1».

Размер в каждом измерении выходной формы является максимальным из входных размеров в этом измерении.

Входные данные могут использоваться в вычислениях, если его размер в определенном измерении соответствует выходному размеру или его значение точно равно 1.

Если вход имеет размерность измерения 1, первая запись данных в этом измерении используется для всех вычислений в этом измерении.

Набор массивов считается транслируемым, если приведенные выше правила дают действительный результат, и одно из следующего верно:

  • Массивы имеют точно такую ​​же форму.

  • Массивы имеют одинаковое количество измерений, а длина каждого измерения равна общей длине или 1.

  • Массив, имеющий слишком мало измерений, может иметь свою форму с добавлением размера длины 1, так что указанное выше свойство имеет значение true.

Массивы имеют точно такую ​​же форму.

Массивы имеют одинаковое количество измерений, а длина каждого измерения равна общей длине или 1.

Массив, имеющий слишком мало измерений, может иметь свою форму с добавлением размера длины 1, так что указанное выше свойство имеет значение true.

Следующая программа показывает пример вещания.

Пример 2

Live Demo

import numpy as np 
a = np.array([[0.0,0.0,0.0],[10.0,10.0,10.0],[20.0,20.0,20.0],[30.0,30.0,30.0]]) 
b = np.array([1.0,2.0,3.0])  
   
print 'First array:' 
print a 
print '\n'  
   
print 'Second array:' 
print b 
print '\n'  
   
print 'First Array + Second Array' 
print a + b

Результат этой программы будет следующим:

First array:
[[ 0. 0. 0.]
 [ 10. 10. 10.]
 [ 20. 20. 20.]
 [ 30. 30. 30.]]

Second array:
[ 1. 2. 3.]

First Array + Second Array
[[ 1. 2. 3.]
 [ 11. 12. 13.]
 [ 21. 22. 23.]
 [ 31. 32. 33.]]

На следующем рисунке показано, как массив b транслируется, чтобы стать совместимым с a .