2 条题解
-
0
NUMPY070 题解:计算每行元素的排名
题目
计算矩阵每行元素的排名(从小到大)。
解题思路
- 读取矩阵
- 两次使用 计算排名
代码
import numpy as np n = int(input()) arr = np.array([list(map(int, input().split())) for _ in range(n)]) rank = arr.argsort(axis=1).argsort(axis=1) print(rank)代码详解
argsort 的原理
返回的是排序后的索引而不是值本身。
两次 argsort 实现排名
- 第一次 —— 获取每行从小到大的索引
- 第二次 —— 对索引再次排序,得到排名
示例解释
对于数组 :
- 排序后的索引:(即第 小是原数组第 个元素,第 小是原数组第 个元素,以此类推)
- 再对索引排序:(即原数组第 个元素排第 ,原数组第 个元素排第 ,原数组第 个元素排第 )
运行示例
输入:
3 3 1 2 2 3 1 1 2 3输出:
[[2 0 1] [1 2 0] [0 1 2]]分析:
- 第 行 :最小是 (排第 ),其次 (排第 ),最大是 (排第 )→
- 第 行 :最小是 (排第 ),其次 (排第 ),最大是 (排第 )→
- 第 行 :本身就是升序 →
核心知识点
- —— 返回排序索引
- 两次 实现排名
- —— 按行操作
- 1
信息
- ID
- 348
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者