gather用于高级切片,有关官方文档的介绍,关于维度的说明非常费解,示例也不太直观,这里给出个人解读,示例见下面,python
indices = [[0, 0], [1, 1]]
算法
params = [['a', 'b'], ['c', 'd']]
output = ['a', 'd']
indices = [[[0, 0]], [[0, 1]]]
api
params = [['a', 'b'], ['c', 'd']]
output = [['a'], ['b']]
[2, 2]
形状,而indice的形状各不相同,按照官网的算法计算输出很不直观,按照个人理解,咱们由最后一维度向外看indices便可,即
[0, 0]
索引到
'a'
,
[1, 1]
索引到
'b'
,而后咱们使用索引到的对象替换掉最后一维度的索引便可,例如,对于
[[0, 0], [1, 1]],
替换掉
[0, 0]
和
[1, 1]
后,即为
['a', 'd']
,而
[[[0, 0]], [[0, 1]]]
替换后保留了外层两个维度:
[['a'], ['b']]
。
[0, 0, 1]
得到
'b0'
,
[1, 0, 1]
得到
'b1'
……,简单替换便可。
indices = [[[0, 0, 1], [1, 0, 1]], [[0, 1, 1], [1, 1, 0]]]
spa
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [['b0', 'b1'], ['d0', 'c1']]