【问题标题】:Sort randomly generated Numpy array according to a different array根据不同的数组对随机生成的 Numpy 数组进行排序
【发布时间】:2018-05-29 13:32:27
【问题描述】:

我创建了 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 按年龄数组对标记数组进行排序。例如:

#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 类似的问题。由于元素是随机生成的,我只是不确定是否适用类似的解决方案。

【问题讨论】:

  • 是的,您的链接答案确实适用于您的情况。在您的情况下,您将根据agemarks 进行排序:sorted_marks = marks[age.argsort()]。为了使其顺利工作,您应该使用 size=200 而不是 size=(1,200) 来消除阵列中的无关轴
  • 更好example

标签: python arrays sorting numpy


【解决方案1】:

一种方法是首先通过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]

【讨论】:

  • 如果我错了,请纠正我,但这不起作用,OP 的意图是什么,因为它独立地对堆叠数组的行进行排序。
  • @Christoph90,好地方,我现在已经更正了答案。
猜你喜欢
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 2013-01-13
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多