Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyrotch使用索引列表修改数组_Python_Pytorch - Fatal编程技术网

Python Pyrotch使用索引列表修改数组

Python Pyrotch使用索引列表修改数组,python,pytorch,Python,Pytorch,假设我有一个索引列表,并希望使用此列表修改现有数组。目前我唯一能做到这一点的方法是使用for循环,如下所示。只是想知道是否有更快/更有效的方法 torch.manual_seed(0) a = torch.randn(5,3) idx = torch.Tensor([[1,2], [3,2]], dtype=torch.long) for i,j in idx: a[i,j] = 1 我最初认为collect或index\u select会在一定程度上回答这个问题,但看看这个似乎不是答

假设我有一个索引列表,并希望使用此列表修改现有数组。目前我唯一能做到这一点的方法是使用for循环,如下所示。只是想知道是否有更快/更有效的方法

torch.manual_seed(0)
a = torch.randn(5,3)
idx = torch.Tensor([[1,2], [3,2]], dtype=torch.long)
for i,j in idx:
    a[i,j] = 1
我最初认为
collect
index\u select
会在一定程度上回答这个问题,但看看这个似乎不是答案

在我的特殊情况下,a是一个5维向量,idx是一个Nx5向量。所以我期望的输出(在使用类似于
a[idx]
的东西订阅之后)是一个
(N,)
形向量

答复 感谢下面的@shai,我寻求的答案是:
a[idx.t().chunk(chunks=2,dim=0)]
。摘自此。

非常简单

a[idx[:,0], idx[:,1]] = 1

你可以在中找到一个更一般的解决方案。

即使假设a有5个维度,也会按此比例缩放。在接受之前,我们将拭目以待,看看是否有更一般的答案。抱歉,添加额外的要求太晚了。@sachinruk请查看添加的链接。