Бродкастинг в массиве Python относится к тому, как numpy обрабатывает массивы с разными размерами во время арифметических операций, которые указывают на определенные ограничения. Например, чем короче массив, тем больше массив, чтобы иметь совместимые формы.
Numpy broadcasting
Метод numpy.broadcast() в Python создает объект, который имитирует бродкастинг. Метод np.broadcast() принимает параметры типа array_like и передает входные параметры друг другу и возвращает объект, который инкапсулирует результат.
Broadcasting — это имя, данное методу, который numpy использует для включения арифметики массива между массивами с другой формой или размером. Массивы разных размеров не могут быть вычислены.
Синтаксис
|
1 |
numpy.broadcast(in1, in2, ...) |
Аргументы
in1, in2 являются входными параметрами.
Возвращаемые значения
Метод np.broadcast() передает входные параметры друг другу и возвращает объект, который инкапсулирует результат.
Пример
Давайте вручную добавим два вектора, используя трансляцию numpy в Python.
|
1 2 3 4 5 6 7 8 9 |
import numpy as np x = np.array([1,2,3,4]) y = np.array([10,20,30,40]) a = np.broadcast(x, y) op = np.empty(a.shape) op.flat = [u+v for(u,v) in a] print(op) |
Вывод:
|
1 |
[11. 22. 33. 44.] |
Сравним со встроенным бродкастингом.
|
1 2 3 4 5 6 |
import numpy as np x = np.array([1,2,3,4]) y = np.array([10,20,30,40]) op = x + y print(op) |
Вывод:
|
1 |
[11 22 33 44] |
Скалярный и двумерный массив
Скалярное значение можно использовать в арифметике с двумерным массивом. Например, мы можем визуализировать двумерный массив «X» с 2 строками и 3 столбцами, добавленными к скаляру «Y».
|
1 2 3 4 5 6 7 |
import numpy as np x = np.array([[1,2,3,4], [10,20,30,40]]) y = np.array([[100,200,300,400], [500, 600, 700, 800]]) op = x + y print(op) |
Вывод:
|
1 2 |
[[101 202 303 404] [510 620 730 840]] |
При выполнении примера печатается результат сложения двух двумерных массивов.
Одномерные и двумерные массивы
Вы можете использовать одномерный массив с двумерным массивом.
|
1 2 3 4 5 6 7 |
import numpy as np x = np.array([[1,2,3,4], [10,20,30,40]]) y = np.array([100,200,300,400]) op = x + y print(op) |
Вывод:
|
1 2 |
[[101 202 303 404] [110 220 330 440]] |
Заключение
Бродкастинг — это удобный способ, который оказывается очень полезным в некоторой практике при работе с массивами Numpy, но он работает не во всех случаях и фактически накладывает строгое правило.
