В дополнение к тому, что предложил @JoshAdel, вы также можете использовать outer
метод любого numpy ufunc
для трансляции в случае двух массивов.
В этом случае вам просто нужно np.subtract.outer(A, B)
(или, скорее, его абсолютное значение).
Хотя любой из них достаточно читабелен для этого примера, в некоторых случаях широковещательная передача более полезна, в то время как в других используетсяМетоды уфунч чище.
В любом случае, полезно знать оба трюка.
Например,
import numpy as np
A = np.array([1,3,6])
B = np.array([2,4,6])
diff = np.subtract.outer(A, B)
result = np.abs(diff)
В основном вы можете использовать outer
, accumulate
, reduce
иreduceat
с любыми значениями ufunc
, такими как subtract
, multiply
, divide
или даже такими вещами, как logical_and
и т. Д.
Например, np.cumsum
эквивалентно np.add.accumulate
.Это означает, что вы можете реализовать что-то вроде cumdiv
на np.divide.accumulate
, если вам даже нужно.