我创建了2个变量。一个保存200个随机生成的年龄,另一个保存200个随机生成的标记。

from numpy import *
age = random.random_integers(18,40, size=(1,200))
marks = random.random_integers(0,100, size=(1,200))


我想使用NumPy按age数组对marks数组进行排序。例如:

#random student ages
[32 37 53 48 39 44 33 40 56 47]
#random student marks
[167 160 176 163 209 178 201 164 190 156]

#sorted marked according to ages
[32 33 37 39 40 44 47 48 53 56]
[167 201 160 209 164 178 156 163 176 190]


这与this问题类似。我只是不确定是否由于元素随机生成而采用了类似的解决方案。

最佳答案

一种方法是首先通过argsort计算顺序,然后使用该索引来索引输入数组:

import numpy as np

np.random.seed(0)

ages = np.random.randint(18, 40, size=10)   # [30 33 39 18 21 21 25 27 37 39]
marks = np.random.randint(0, 100, size=10)  # [36 87 70 88 88 12 58 65 39 87]

order = ages.argsort()                      # [3 4 5 6 7 0 1 8 2 9]

print(ages[order])                          # [18 21 21 25 27 30 33 37 39 39]
print(marks[order])                         # [88 88 12 58 65 36 87 39 70 87]

10-06 03:02