我有一个形状为
我需要创建一个形状为
如何在不使用for循环和向量化的情况下进行此操作?我猜这是一个维度扩展问题,但我找不到正确的函数来实现它。(我需要这个功能,因为我正在使用tensorflow并在numpy中进行原型设计。)
[batch_size, N]
的数组,例如:[[1 2]
[3 4]
[5 6]]
我需要创建一个形状为
[batch_size, N, N]
的3个索引数组,其中对于每个batch
,我有一个N x N
的对角线矩阵,其中对角线由相应的batch
元素取得,例如在这种情况下,我要找的结果是:[
[[1,0],[0,2]],
[[3,0],[0,4]],
[[5,0],[0,6]],
]
如何在不使用for循环和向量化的情况下进行此操作?我猜这是一个维度扩展问题,但我找不到正确的函数来实现它。(我需要这个功能,因为我正在使用tensorflow并在numpy中进行原型设计。)
einsum
这样的函数使它高度向量化并在一行中完成。 - linello