在 numpy 中高效创建数组

Efficient array creation in numpy

我正在尝试创建一个三维数组,Tusing numpy 定义如下:

T_{i, j, k} = \delta_{i, k} - \delta{j, k}

其中 \delta_{i, j} 是 Kronecker delta 函数(当 i=j 时为 1,否则为 0)。我想知道使用 numpy 执行此操作的最有效方法是什么。我可以使用 for 循环创建两个三维数组并将它们相减。但我怀疑有一种更快、更惯用的方法。任何帮助将不胜感激。

在numpy中相当于delta的是eye:

delta = numpy.eye(5)
T = delta[:,None,:] - delta[None,:,:]

None 创建一个 ‹virtual› 维度(不占用任何额外内存)用于在 numpy 中广播。