【问题标题】:Sorting the np array by second value [duplicate]按第二个值对np数组进行排序[重复]
【发布时间】:2020-10-06 23:58:21
【问题描述】:

如果我想对声明的这个数组进行排序 np.zeros((50),dtype=object) 我想按第一个值对这个数组进行排序,

[list([2, 5]) list([3, 0]) list([2, 7]) list([3, 1]) list([11, 2])]

喜欢

[list([2, 5]) list([2, 7]) list([3, 0]) list([3, 1]) list([11, 2])]

我应该使用什么? 我一直在尝试sort()、sorted() 等。

【问题讨论】:

  • 你的问题是重复的——另外,因为[2, 5] 是一个字符串文字,list([2, 5]) 中的list() 是多余的。
  • 只是检查。您的输入应该是 5x2 numpy 数组吗? 5 个 2 元素数字数组的列表?有点不清楚。
  • 您的数组中的所有列表的长度是否相同(这里是两个)?
  • @Grismar 好的,我会做一些研究。这是我的代码ary[i] = [min(t4), np.argmin(t4)],所以数组的dtype是对象,导致list()在数组中输入。

标签: python arrays numpy sorting


【解决方案1】:

如果数组中的所有列表长度相同,则可以使用 numpy lexsort(a 是您的数组):

a = np.array(a)
a[np.lexsort((a[:,-1],a[:,-2]))]
#[[ 2  5]
# [ 2  7]
# [ 3  0]
# [ 3  1]
# [11  2]]

或等效:

a[np.lexsort(a.T[::-1,:])]

【讨论】:

猜你喜欢
  • 2019-01-08
  • 2011-10-25
  • 2021-11-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 2021-11-14
相关资源
最近更新 更多