You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow中如何获取向量的Sorted Index Function(排序索引函数)?

在TensorFlow中获取向量的排序索引函数ψ

嘿,这个问题我刚好处理过!你要的排序索引函数ψ,其实就是能让排序后的向量等于原向量通过该索引张量取值的那个ψ对吧?简单来说,假设原向量是v,排序后的向量是sorted_v,那么ψ满足sorted_v[i] = v[ψ[i]]。在TensorFlow里,用tf.argsort就能直接获取这个索引张量,我给你一步步演示:

基础用法(一维向量)

首先,我们先创建一个示例向量,然后用tf.argsort生成ψ:

import tensorflow as tf

# 定义原向量v
v = tf.constant([3, 1, 4, 1, 5])

# 获取升序排序的索引ψ
psi = tf.argsort(v)

验证一下是否符合预期:

# 通过ψ索引原向量,得到排序后的结果
sorted_v = tf.gather(v, psi)

print("原向量:", v.numpy())
print("排序索引ψ:", psi.numpy())
print("排序后的向量:", sorted_v.numpy())

输出结果:

原向量: [3 1 4 1 5]
排序索引ψ: [1 3 0 2 4]
排序后的向量: [1 1 3 4 5]

降序排序的ψ

如果需要降序排序对应的索引,只需要给tf.argsort加上direction='DESCENDING'参数:

psi_desc = tf.argsort(v, direction='DESCENDING')
sorted_v_desc = tf.gather(v, psi_desc)

print("降序排序索引ψ:", psi_desc.numpy())
print("降序排序后的向量:", sorted_v_desc.numpy())

输出结果:

降序排序索引ψ: [4 2 0 1 3]
降序排序后的向量: [5 4 3 1 1]

高维张量的情况

如果你的张量是高维的(比如二维矩阵),可以通过axis参数指定按哪一维度排序获取索引。比如按行排序:

v_2d = tf.constant([[3, 1, 2], [5, 0, 4]])
# 按行(axis=1)获取排序索引ψ
psi_2d_row = tf.argsort(v_2d, axis=1)

print("二维张量按行排序的ψ:\n", psi_2d_row.numpy())

输出结果:

二维张量按行排序的ψ:
 [[1 2 0]
 [1 2 0]]

简单来说,tf.argsort返回的张量就是你要找的排序索引函数ψ,它直接给出了排序后每个位置对应的原向量元素索引,完全符合你的需求~

内容的提问来源于stack exchange,提问作者Robin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:02:23