您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

按多个轴对二维numpy数组排序

按多个轴对二维numpy数组排序

使用lexsort

import numpy as np    
a = np.array([(3, 2), (6, 2), (3, 6), (3, 4), (5, 3)])

ind = np.lexsort((a[:,1],a[:,0]))

a[ind]
# array([[3, 2],
#       [3, 4],
#       [3, 6],
#       [5, 3],
#       [6, 2]])

a.ravel()如果a为,则返回一个视图C_CONTIGUOUS。如果是这样的话,@ars的方法(通过使用ravel代替稍作修改)将flatten产生一种很好a的就地 排序方法

a = np.array([(3, 2), (6, 2), (3, 6), (3, 4), (5, 3)])
dt = [('col1', a.dtype),('col2', a.dtype)]
assert a.flags['C_CONTIGUOUS']
b = a.ravel().view(dt)
b.sort(order=['col1','col2'])

由于b一个视图a,排序b排序a,以及:

print(a)
# [[3 2]
#  [3 4]
#  [3 6]
#  [5 3]
#  [6 2]]
其他 2022/1/1 18:43:32 有567人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶