Spec-Zone.ru › NumPy 1.21

numpy.ufunc.outer

метод

ufunc.outer(A, B, /, **kwargs)

Применяет ufunc op ко всем парам (a, b), где a в A и b в B.

Пусть M = A.ndim, N = B.ndim. Тогда результат, C, применения op.outer(A, B) — это массив размерности M + N, такой что:

\[C[i_0, ..., i_{M-1}, j_0, ..., j_{N-1}] = op(A[i_0, ..., i_{M-1}], B[j_0, ..., j_{N-1}])\]

Для A и B одномерных, это эквивалентно:

r = empty(len(A),len(B))
for i in range(len(A)):
    for j in range(len(B)):
        r[i,j] = op(A[i], B[j])  # op = ufunc in question
Параметры
Aarray_like

Первый массив

Barray_like

Второй массив

kwargsany

Аргументы для передачи ufunc. Обычно dtype или out. См. ufunc для всестороннего обзора всех доступных аргументов.

Возвращает
rndarray

Массив результатов

См. также

numpy.outer

Менее мощная версия np.multiply.outer, которая ravel все входные данные в 1D. Она существует в основном для совместимости со старым кодом.

tensordot

np.tensordot(a, b, axes=((), ())) и np.multiply.outer(a, b) ведут себя одинаково для всех измерений a и b.

Примеры

>>> np.multiply.outer([1, 2, 3], [4, 5, 6])
array([[ 4,  5,  6],
       [ 8, 10, 12],
       [12, 15, 18]])

Пример с многомерными массивами:

>>> A = np.array([[1, 2, 3], [4, 5, 6]])
>>> A.shape
(2, 3)
>>> B = np.array([[1, 2, 3, 4]])
>>> B.shape
(1, 4)
>>> C = np.multiply.outer(A, B)
>>> C.shape; C
(2, 3, 1, 4)
array([[[[ 1,  2,  3,  4]],
        [[ 2,  4,  6,  8]],
        [[ 3,  6,  9, 12]]],
       [[[ 4,  8, 12, 16]],
        [[ 5, 10, 15, 20]],
        [[ 6, 12, 18, 24]]]])

© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/generated/numpy.ufunc.outer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API