Python tensorflow argsort排序混乱?
我肯定错过了一些非常明显的东西,但是argsort()的行为似乎不一致 这里是一个5个浮点数的简单示例,其中第一个示例显示了预期的结果,但是第二个示例似乎混淆了Python tensorflow argsort排序混乱?,python,tensorflow,Python,Tensorflow,我肯定错过了一些非常明显的东西,但是argsort()的行为似乎不一致 这里是一个5个浮点数的简单示例,其中第一个示例显示了预期的结果,但是第二个示例似乎混淆了 ##- Example 1 : Should return [4, 1, 2, 3, 0] a = [1.0, 0.25, 0.5, 0.75, 0.0] b = tf.argsort(a,axis=-1,direction='ASCENDING',stable=True,name=None) c = tf.keras.backend.
##- Example 1 : Should return [4, 1, 2, 3, 0]
a = [1.0, 0.25, 0.5, 0.75, 0.0]
b = tf.argsort(a,axis=-1,direction='ASCENDING',stable=True,name=None)
c = tf.keras.backend.eval(b)
tf.print(f'expected: {c}')
##- Example 2 : Should return [3, 2, 0, 4, 1] (I think)
a = [0.75, 0.5, 0.0, 1.0, 0.25]
b = tf.argsort(a,axis=-1,direction='ASCENDING',stable=True,name=None)
c = tf.keras.backend.eval(b)
tf.print(f'confused: {c}')
这就产生了
expected: [4 1 2 3 0]
confused: [2 4 1 0 3]
我希望:
[4, 1, 2, 3, 0]
[3, 2, 0, 4, 1]
有人能解释一下这种行为吗?我想你对
argsort
应该返回的内容感到困惑。解释输出的方法是,如果使用这些索引对原始数组进行索引,那么最终将按排序顺序取出所有元素
- 它会告诉您从数组中选择元素以获得排序结果的顺序
- 它不会告诉您索引
处的数字应该位于什么位置i
这就是
argsort
的使用方法:
arr = np.array([0.75, 0.5, 0.0, 1.0, 0.25])
np.argsort(arr)
# array([2, 4, 1, 0, 3])
arr[np.argsort(arr)]
# array([0. , 0.25, 0.5 , 0.75, 1. ])
除此之外,您通常会对其他内容进行排序,而不是
arr
谢谢。是的,你说得对。在我努力理解这个函数的过程中,我碰巧选择了一个顺序,这使我以另一种方式来看待这个问题,我无法让我的大脑去发现它。谢谢你把它弄松了。