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

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

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

最佳答案

相当于 delta 的是 numpy 中的 eye:

delta = numpy.eye(5)
T = delta[:,None,:] - delta[None,:,:]
None 创建一个‹virtual›维度(不占用任何额外的内存),用于在numpy 中进行广播。

关于python - numpy中的高效数组创建,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42465879/

10-12 18:15