【发布时间】:2016-06-23 05:23:15
【问题描述】:
我有一个ByteTensor 并想获取有1 的索引。在 numpy 中,我可以做类似的事情
a = np.array([1,0,1,0,1])
return np.where(a)
这将返回(array([0, 2, 4]),)。这个功能是在 Torch 中定义的吗?
(在我的特殊情况下,我想使用这些索引来索引几个不同的 Tensor 对象,但一般来说知道如何做到这一点会很好。)
【问题讨论】:
我有一个ByteTensor 并想获取有1 的索引。在 numpy 中,我可以做类似的事情
a = np.array([1,0,1,0,1])
return np.where(a)
这将返回(array([0, 2, 4]),)。这个功能是在 Torch 中定义的吗?
(在我的特殊情况下,我想使用这些索引来索引几个不同的 Tensor 对象,但一般来说知道如何做到这一点会很好。)
【问题讨论】:
您可以使用torch.nonzero,例如:
> a = torch.ByteTensor{1,0,1,0,1}
> print(torch.nonzero(a))
1
3
5
[torch.LongTensor of size 3x1]
如果你真的只需要找到 1-s,你可以链接一个逻辑运算符:
> a = torch.ByteTensor{1,2,1,6,1}
> a:eq(1):nonzero()
【讨论】: