证明:为什么双重argsort后能够得到各元素的排序

目标: 证明对数组 A 应用两次 argsort 操作后,得到的结果 A’’ 表示 A 中每个元素的排序位置。

前提:

  • A 是原始数组。
  • A'A 经过 argsort() 一次后的结果。(第一次 argsort 操作)
  • A''A' 经过 argsort() 再次排序后的结果。(第二次 argsort 操作)

核心概念:

  • argsort (X) 返回一个索引数组,表示如果要对 X 进行排序,应该按照这个索引数组的顺序选择 X 中的元素。
  • A’ 中的元素表示 A 中对应元素的排序位置。

解释

  1. 第一次 argsort():

    • A'[i] = j 表示 A[j]A 中的第 i 小元素。
    • 例如,假设 A = [10, -5, 20, 0],那么 A' = [1, 3, 0, 2]
    • A'[0] = 1 表示 A[1] (即 -5) 是 A 中最小的元素。
    • A'[1] = 3 表示 A[3] (即 0) 是 A 中第二小的元素。
    • A'[2] = 0 表示 A[0] (即 10) 是 A 中第三小的元素。
    • A'[3] = 2 表示 A[2] (即 20) 是 A 中最大的元素。
  2. 第二次 argsort():

    • A''[k] = q 表示 A'[q]A' 中的第 k 小元素。
    • 由于 A' 实际上包含了 A 的索引,因此 A' 的元素范围是从 0 到 |A| - 1。
    • 因为 A' 的元素值为索引值,所以就是从小到大的,所以 A' 中的元素值和其代表的排序位置是一致的。
    • 例如,如果 A' = [1, 3, 0, 2],那么 A'' = [2, 0, 3, 1]
      • A''[0] = 2 表示 A'[2] (即 0) 是 A' 中的最小元素。(元素值=排列位置,即 A'[q] = k
      • A''[1] = 0 表示 A'[0] (即 1) 是 A' 中的第二小元素。
      • A''[2] = 3 表示 A'[3] (即 2) 是 A' 中的第三小元素。
      • A''[3] = 1 表示 A'[1] (即 3) 是 A' 中的第四小元素。
  3. 关键洞察:

    • A''[k] = q 能够得到 A'[q] = k
    • A'[q] = k 意味着 A[k]A 中的第 q 小元素。
    • 换句话说,A[k] 的排名是 q
    • A'' [2, 0, 3, 1] 中的每个元素值,都代表了 A [10, -5, 20, 0] 中对应位置元素的排名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值