嗨,我相信这是一个最好的例子,可以说明这个问题。
我有一个numpy数组
array =
[[ 101 27]
[6 355]
[6400 85]
[ 33 96]]
我想基于第二列中的值对数组进行排序(升序)以获取
array =
[[ 101 27]
[6400 85]
[ 33 96]
[6 355]]
然后,我想按第一列升序排序,但仅适用于第一行和第二行。然后重复第三和第四行。
这最后一步可以用伪代码解释:
if array[0][0] > array[1][0]:
transpose array[0] and array[1]
if array[2][0] > array[3][0]:
transpose array[2] and array[3]
这给出:
array =
[[ 101 27]
[6400 85]
[6 355]
[ 33 96]]
我可以轻松地做到这一点,但是代码不是很好,我假设有一种优雅/有效的方式来做到这一点?
问题来源:stackoverflow
您可以在python中使用内置的sorted
函数来轻松完成任务,
尝试这个:
array = sorted(array, key=lambda x: x[1])
array[:2] = sorted(array[:2], key=lambda x: x[0]) # sort first two rows by first col
array[2:] = sorted(array[2:], key=lambda x: x[0]) # sort next two rows by first col
print(array)
输出:
[[101, 27],
[6400, 85],
[6, 355],
[33, 96]]
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。