Python 根据不同的数组对随机生成的Numpy数组进行排序

Python 根据不同的数组对随机生成的Numpy数组进行排序,python,arrays,sorting,numpy,Python,Arrays,Sorting,Numpy,我创建了两个变量。一个用来保存200个随机生成的年龄,另一个用来保存200个随机生成的分数 from numpy import * age = random.random_integers(18,40, size=(1,200)) marks = random.random_integers(0,100, size=(1,200)) 我想使用NumPy按年龄数组对marks数组进行排序。例如: #random student ages [32 37 53 48 39 44 33 40 56 4

我创建了两个变量。一个用来保存200个随机生成的年龄,另一个用来保存200个随机生成的分数

from numpy import *
age = random.random_integers(18,40, size=(1,200))
marks = random.random_integers(0,100, size=(1,200))
我想使用NumPy按年龄数组对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]

这是一个类似的问题。由于元素是随机生成的,我不确定是否适用类似的解决方案。

一种方法是首先计算一个排序via,然后使用它来索引您的输入数组:

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]

是的,您的链接答案确实适用于您的情况。。在您的情况下,您将根据
年龄对
标记进行排序
排序标记=标记[age.argsort()]
。但是,为了使其顺利工作,您应该使用
size=200
而不是
size=(1200)
来消除数组中的无关轴。如果我错了,请纠正我的错误,这可能是better的重复项,但这并不能实现OP的目的,因为它会对堆叠数组的行进行独立排序。@Christoph90,很好,我现在已经更正了答案。