numpy中有效的数组创建

时间:2017-02-26 07:27:51

标签: python numpy numpy-broadcasting

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

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

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

1 个答案:

答案 0 :(得分:6)

numpy中等价于delta的eye

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

None创建一个用于numpy广播的维度(不占用任何额外内存)。