a.scatter_(dim,index,src)意味着根据某种规则将src中数据写入到a当中去,而这种规则正是由dim和index所决定。
self[index[i][j][k]][j][k] = src[i][j][k] # if dim == 0
self[i][index[i][j][k]][k] = src[i][j][k] # if dim == 1
self[i][j][index[i][j][k]] = src[i][j][k] # if dim == 2
假设index[i][j][k]=b,dim=0
由以上可以看出index[i][j][k]和src[i][j][k]可以看出index与src是同型的。src上对应元素b在index的位置正好是要映射入a[b][i][j]的位置。
所以不难将上述映射关系引入二维:
self[index[i][j]][j] = src[i][j] # if dim == 0
self[i][index[i][j]] = src[i][j] # if dim == 1
当dim=0时,index与src列标一致,可以理解为index的对应列操控src的对应列产生映射。
![](https://i-blog.csdnimg.cn/blog_migrate/d0633d2a1d4a917d236ee9ee0a914b91.jpeg)