перекрестное произведение, но возводить в степень, а не умножать

У меня есть два вектора. Я хотел бы использовать функцию "перекрестного произведения", которая будет принимать каждое значение из первого вектора и повышать его до показателя степени каждого значения во втором векторе, возвращая матрицу. Есть ли что-нибудь встроенное в numpy, которое делает это? Это можно сделать с помощью циклов, но я ищу что-то эффективное.

Например:

>>> cross_exp([1,2], [3,4]) 
[[1, 1],[8, 16]]

person user3439329    schedule 16.09.2015    source источник
comment
Учитывая ваш ожидаемый результат, похоже, вы запрашиваете функцию, подобную внешнему продукту, а не функцию, подобную перекрестному продукту (поправьте меня, если я неправильно понял).   -  person Alex Riley    schedule 16.09.2015


Ответы (1)


Похоже, вам может понадобиться np.power.outer:

>>> np.power.outer([1,2], [3,4])
array([[ 1,  1],
       [ 8, 16]])

В большинстве ufunc есть метод outer, который вычисляет результат операции над все пары значений из двух массивов (обратите внимание, что это отличается от перекрестного произведения).

person Alex Riley    schedule 16.09.2015