如何解决按多列对numpy 2d数组进行排序
array([[5,0],[3,1],[7,[2,1]])
我想(子)按每列(从右到左说)排序来得到这个:
array([[5,1]])
我怎样才能在 numpy 中做到这一点?
解决方法
Numpy 包含一个用于按列进行子排序的本机函数,lexsort
:
idx = np.lexsort((arr[:,0],arr[:,1]))
arr_sorted = arr[idx]
或者,如果您更熟悉,也可以使用 Pandas 语法;这将有一些内存/时间开销,但对于
arr = [
[5,[3,1],[7,[2,1]
]
df = pd.DataFrame(data=arr).sort_values([1,0])
arr_sorted = df.to_numpy()
输出(两者):
array([[5,1]])
,
您可以使用 np.lexsort
对多列的数组进行排序:
idx = np.lexsort((a[:,a[:,1]))
a[idx]
输出:
array([[5,1]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。