Метод outer
Метод outer класса ufunc вычисляет внешнее произведение для двух массивов. Он применяет универсальную функцию ко всем парам элементов из первого и второго массива. Первым параметром передаётся массив A, вторым - массив B. Результатом является двумерный массив, где элемент с индексами (i, j) равен результату применения функции к элементам A[i] и B[j].
Синтаксис
np.ufunc.outer(A, B, **kwargs)
Пример
Давайте вычислим внешнее произведение двух одномерных массивов с помощью функции multiply:
import numpy as np
A = np.array([1, 2, 3])
B = np.array([4, 5, 6])
res = np.multiply.outer(A, B)
print(res)
Результат выполнения кода:
[[ 4 5 6]
[ 8 10 12]
[12 15 18]]
Пример
Используем метод outer с функцией add для создания матрицы сумм:
import numpy as np
A = np.array([1, 2, 3, 4])
B = np.array([10, 20, 30])
res = np.add.outer(A, B)
print(res)
Результат выполнения кода:
[[11 21 31]
[12 22 32]
[13 23 33]
[14 24 34]]
Пример
Метод outer также работает с многомерными массивами. Рассмотрим пример с функцией power:
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([2, 3])
res = np.power.outer(A, B)
print(res)
Результат выполнения кода:
[[[ 1 1]
[ 2 3]]
[[ 4 8]
[ 9 27]]
[[ 9 27]
[16 64]]]
Пример
Используем метод outer с функцией logical_or для вычисления внешней дизъюнкции:
import numpy as np
A = np.array([True, False])
B = np.array([True, True, False])
res = np.logical_or.outer(A, B)
print(res)
Результат выполнения кода:
[[ True True True]
[ True True False]]
Смотрите также
-
класс
ufunc,
который является базовым для всех универсальных функций -
метод
reduce,
который последовательно применяет функцию к элементам массива -
метод
accumulate,
который накапливает результаты применения функции -
метод
at,
который применяет функцию к элементам по заданным индексам