2013-07-11 2 views
5

В NumPy, мы можем выполнить «внешнее дополнение» между двумя векторами a и b как это:Может ли numpy einsum() выполнять внешнее дополнение?

a=np.c_[1,2,3] 
b=np.c_[4,5,6] 
result=a+b.T # alternatively this can be a.T+b 

Можно ли использовать einsum сделать такой же расчет? Любые другие быстрые альтернативы? Как насчет, если a равно b?

+3

Я не думаю, что 'einsum' может это сделать (по крайней мере, без использования дополнительных массивов). Я не могу придумать более быстрый способ сделать это, чем простая сумма, использующая широковещательную рассылку, которую вы написали, слишком ли она медленная? Поскольку результат симметричен, вы можете написать расширение, в котором было минимально возможное количество сумм. – jorgeca

ответ

9

Другой быстрая альтернатива этой операции заключается в использовании:

np.add.outer(a,b) 
Смежные вопросы