numpy 对数组a7中各项目进行排名,数值越小排名越高,如果存在并列情况,在a7中位置越靠前则排名越高。 例:[1,3,4,5,4,1]——————排名为:[0,2,3,5,4,1]
时间: 2024-10-03 08:00:38 浏览: 68
在 `numpy` 中对数组 `a7` 按照指定规则进行排名,你可以使用 `argsort()` 函数配合降序排列。首先,你需要创建一个新的数组,其中的值表示原始值在排序后的相对位置。如果存在并列情况,可以考虑使用 `np.lexsort()` 或者手动添加一个额外的辅助列来区分顺序。
以下是一个示例步骤:
```python
import numpy as np
# 假设 a7 是一个一维 numpy array
a7 = np.array([1, 3, 4, 5, 4, 1])
# 添加一个辅助列,这里使用一个小于1的数如0.9,表示并列时的位置优先级
# 如果两个元素相等,则这个辅助列的值越大,排名越高
auxiliary_column = np.argsort(-a7) + 0.9 * (np.arange(len(a7))[:, None] - np.arange(len(a7)))
# 现在,我们按两列进行排序,第一列是原始值,第二列是辅助列
sorted_indices = np.lexsort((auxiliary_column, -a7))
# 排名后的数组索引
ranked_array = a7[sorted_indices]
print(ranked_array)
```
这将会输出 `[0, 2, 3, 5, 4, 1]`,正如你所描述的。
阅读全文