Python pytorch中二维张量的高级索引

Python pytorch中二维张量的高级索引,python,indexing,pytorch,tensor,array-broadcasting,Python,Indexing,Pytorch,Tensor,Array Broadcasting,我有一个2d张量X和两个索引列表,第一个索引,第二个调用a和b。我想做什么 X[a[i],b[i]=0表示范围内的i(len(a)) 我怎样才能做到这一点。如果直接执行X[a,b]操作,则错误为Indexer错误:无法广播高级索引对象请检查包含索引的列表,某些值可能超出范围。此时您将获得索引器,如下所示: In[43]:X[4,4] 索引器回溯(最后一次最近调用) 在() ---->1 X[4,4] 索引器:索引4超出维度0(大小为3)的范围 如果你的指数在正确的范围内,它应该可以正常工作 以下

我有一个2d张量X和两个索引列表,第一个索引,第二个调用a和b。我想做什么

X[a[i],b[i]=0表示范围内的i(len(a))


我怎样才能做到这一点。如果直接执行
X[a,b]
操作,则错误为Indexer错误:无法广播高级索引对象

请检查包含索引的
列表
,某些值可能超出范围。此时您将获得索引器,如下所示:

In[43]:X[4,4]

索引器回溯(最后一次最近调用) 在() ---->1 X[4,4]

索引器:索引4超出维度0(大小为3)的范围

如果你的指数在正确的范围内,它应该可以正常工作

以下是一个例子:

In [35]: X = torch.Tensor([[3, 4, 5, 6], [1, 2, 3, 4], [6, 3, 2, 1]])

In [36]: X
Out[36]: 

 3  4  5  6
 1  2  3  4
 6  3  2  1
[torch.FloatTensor of size 3x4]

In [37]: a = [0, 2]

In [38]: b = [1, 2]

In [39]: X[a, b]
Out[39]: 

 4
 2
[torch.FloatTensor of size 2]

In [40]: X[a, b] = 0

In [41]: X
Out[41]: 

 3  0  5  6
 1  2  3  4
 6  3  0  1
[torch.FloatTensor of size 3x4]

检查包含索引的
列表
,某些值可能超出范围。此时您将获得索引器,如下所示:

In[43]:X[4,4]

索引器回溯(最后一次最近调用) 在() ---->1 X[4,4]

索引器:索引4超出维度0(大小为3)的范围

如果你的指数在正确的范围内,它应该可以正常工作

以下是一个例子:

In [35]: X = torch.Tensor([[3, 4, 5, 6], [1, 2, 3, 4], [6, 3, 2, 1]])

In [36]: X
Out[36]: 

 3  4  5  6
 1  2  3  4
 6  3  2  1
[torch.FloatTensor of size 3x4]

In [37]: a = [0, 2]

In [38]: b = [1, 2]

In [39]: X[a, b]
Out[39]: 

 4
 2
[torch.FloatTensor of size 2]

In [40]: X[a, b] = 0

In [41]: X
Out[41]: 

 3  0  5  6
 1  2  3  4
 6  3  0  1
[torch.FloatTensor of size 3x4]