从向量自身的逐元素运算生成数组

Generate array from elementwise operation of vector with itself

通过在向量的每个元素和整个向量之间执行运算来生成数组的“最佳”方法是什么?

下面的示例使用循环和减法作为操作,但在一般情况下,操作可以是任何函数。

“最佳”的标准可以是:执行速度、所需代码量、可读性

a = np.array([1, 2, 3])
dim = len(a)
b = np.empty([dim, dim])

def operation(x1, x2):
  return x1-x2

for i in range(dim):
  b[i,:] = operation(a, a[i])

print(b)

我认为 numpy 广播将满足您的所有条件;)

>>> a - a[:, None]
array([[ 0,  1,  2],
       [-1,  0,  1],
       [-2, -1,  0]])