我正在尝试创建一个三维数组T,使用numpy定义如下:
T_{i, j, k} = \delta_{i, k} - \delta{j, k}
其中\delta_{i, j}是Kronecker delta函数(当i=j时为1,否则为0)。我想知道使用numpy最有效的方法是什么。我可以使用for循环创建两个三维数组并将它们相减。但我怀疑有一种更快速和更符合习惯的方法。任何帮助将不胜感激。
我正在尝试创建一个三维数组T,使用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
在numpy中创建了一个‹虚拟›维度(不占用任何额外的内存),用于广播。