Python pytorch中二维张量的高级索引
我有一个2d张量X和两个索引列表,第一个索引,第二个调用a和b。我想做什么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)的范围 如果你的指数在正确的范围内,它应该可以正常工作 以下
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]