numpy.outer
numpy.outer(a, b, out=None)
Функция 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
- Внешнее произведение двух векторов.
.
Замечание
Внешнее произведение иногда называют прямым или тензорным.
Примеры
>>> 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)