分为三步,
1. 根据dim,把研究对象找出来
当dim=0:
比如矩阵t(m,n),轴dim=0就是指m变化对应的轴,那我们研究的对象就是当n确定时比如n=
j时,m从0开始变化,也就是t(0,j)t(2,j)t(3,j)...t(m,j),说人话就是我们要研究的是一列一列的数据。
同理dim=1时,我们要研究的是一行一行的数据。
把我们要研究的对象也就是目标target矩阵、索引index矩阵和源src矩阵根据dim取出一列数据(dim=0)或者一行数据(dim=1)。比如当dim=1时我们取出的研究数据如上图。
2. 把索引与源数据逻辑对应起来,举两个例子把index和src通过头部对齐的方式组合在一起,如上图。
3. 遍历组合后的数据,根据index的值找到target需要填充的位置,再把与index组合在一起的值赋值给target中这个需要填充的位置。
就这样根据dim的值一行或者一列的处理,接下来研究一下index、target与src大小的限制,还是以dim=1为例(dim=0同理,因为我们把研究对象单独拿出来一行或者一列,迁移理解起来也并不复杂)拿出一行数据进行研究:
1. 首先,index的一行不能比src的一行长,不然缺少src的数据,但index可以比src短,这时从头部进行对齐,所以index<=src。
2. 同理indx的一行也不能比target的一行长,因为更多的index没地方填充就没有意义。所以index<=target。
官方解释