numpy.outer

numpy.outer(a, b, out=None)

Функция numpy.outer() вычисляет внешнее произведение двух векторов.

Для двух векторов a длинной N и b длинной M внешнее произведение определяется следующим правилом:

[[a0*b0, a0*b1, ..., a0*bN],
 [a1*b0, a1*b1, ..., a1*bN],
 ...
 [aM*b1, aM*b1, ..., aM*bN]]

Данное правило может быть обобщено на массивы с большей размерностью. Но данная функция сжимает все многомерные массивы до одной оси.

Параметры:
a, b - числа, массивы NumPy или подобные массивам объекты.
Одномерные массивы, необязательно одинаковой длины. Двумерные и многомерные массивы сжимаются до одной оси.
out - массив NumPy, необязательный параметр.
Массив в который можно поместить результат функции. Данный массив должен соответствовать форме и типу данных результирующего массива функции, а так же обязательно быть C-смежным, т.е. хранить данные в строчном С стиле. Указание данного параметра, позволяет избежать лишней операции присваивания тем самым немного ускоряя работу вашего кода. Полезный параметр если вы очень часто обращаетесь к функции в цикле.
Возвращает:
результат - двумерный массив NumPy
Внешнее произведение двух векторов..

Замечание

Внешнее произведение иногда называют прямым или тензорным.

Смотрите так же:
inner, dot, matmul

Примеры

>>> A = np.ones(6)
>>> A
array([1., 1., 1., 1., 1., 1.])
>>> 
>>> B = np.arange(6)
>>> B
array([0, 1, 2, 3, 4, 5])
>>> 
>>> np.outer(A, B)
array([[0., 1., 2., 3., 4., 5.],
       [0., 1., 2., 3., 4., 5.],
       [0., 1., 2., 3., 4., 5.],
       [0., 1., 2., 3., 4., 5.],
       [0., 1., 2., 3., 4., 5.],
       [0., 1., 2., 3., 4., 5.]])

Если один из векторов Python-строки (объекты языка Python), то применение функции np.outer(), так же возможно:

>>> A = np.array(['a', 'b', 'c', 'd'], dtype = object)
>>> B = [1, 2, 3, 4]
>>> 
>>> np.outer(A, B)
array([['a', 'aa', 'aaa', 'aaaa'],
       ['b', 'bb', 'bbb', 'bbbb'],
       ['c', 'cc', 'ccc', 'cccc'],
       ['d', 'dd', 'ddd', 'dddd']], dtype=object)