argsort
paddle.fluid.layers.
argsort
(input, axis=-1, descending=False, name=None)[源代码]
对输入变量沿给定轴进行排序,输出排序好的数据和相应的索引,其维度和输入相同。默认升序排列,如果需要降序排列设置 descending=True
。
- 参数:
- input (Variable) - 输入的多维
Tensor
,支持的数据类型:float32、float64。 - axis (int,可选) - 指定对输入Tensor进行运算的轴,
axis
的有效范围是[-R, R),R是输入x
的Rank,axis
为负时与axis
+R 等价。默认值为0。 - descending (bool,可选) - 指定算法排序的方向。如果设置为True,算法按照降序排序。如果设置为False或者不设置,按照升序排序。默认值为False。
- name (str,可选) – 具体用法请参见 Name ,一般无需设置,默认值为None。
- input (Variable) - 输入的多维
返回:一组已排序的输出(与 input
维度相同、数据类型相同)和索引(数据类型为int64)。
返回类型:tuple[Variable]
代码示例:
- import paddle.fluid as fluid
- import numpy as np
- in1 = np.array([[[5,8,9,5],
- [0,0,1,7],
- [6,9,2,4]],
- [[5,2,4,2],
- [4,7,7,9],
- [1,7,0,6]]]).astype(np.float32)
- with fluid.dygraph.guard():
- x = fluid.dygraph.to_variable(in1)
- out1 = fluid.layers.argsort(input=x, axis=-1) # same as axis==2
- out2 = fluid.layers.argsort(input=x, axis=0)
- out3 = fluid.layers.argsort(input=x, axis=1)
- print(out1[0].numpy())
- # [[[5. 5. 8. 9.]
- # [0. 0. 1. 7.]
- # [2. 4. 6. 9.]]
- # [[2. 2. 4. 5.]
- # [4. 7. 7. 9.]
- # [0. 1. 6. 7.]]]
- print(out1[1].numpy())
- # [[[0 3 1 2]
- # [0 1 2 3]
- # [2 3 0 1]]
- # [[1 3 2 0]
- # [0 1 2 3]
- # [2 0 3 1]]]
- print(out2[0].numpy())
- # [[[5. 2. 4. 2.]
- # [0. 0. 1. 7.]
- # [1. 7. 0. 4.]]
- # [[5. 8. 9. 5.]
- # [4. 7. 7. 9.]
- # [6. 9. 2. 6.]]]
- print(out3[0].numpy())
- # [[[0. 0. 1. 4.]
- # [5. 8. 2. 5.]
- # [6. 9. 9. 7.]]
- # [[1. 2. 0. 2.]
- # [4. 7. 4. 6.]
- # [5. 7. 7. 9.]]]