Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tensorflow argsort排序混乱?_Python_Tensorflow - Fatal编程技术网

Python tensorflow argsort排序混乱?

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.

我肯定错过了一些非常明显的东西,但是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.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

谢谢。是的,你说得对。在我努力理解这个函数的过程中,我碰巧选择了一个顺序,这使我以另一种方式来看待这个问题,我无法让我的大脑去发现它。谢谢你把它弄松了。