gpt4 book ai didi

python - np.lexsort 背后的排序逻辑是什么?

转载 作者:行者123 更新时间:2023-12-01 02:02:25 25 4
gpt4 key购买 nike

这个功能是如何工作的?

import numpy as np
first_names = (5,5,5)
last_names = (3,1,2)
x = np.lexsort((first_names, last_names))
print(x)

它给出输出 [1 2 0] 。我假设这两个列表是按变量last_names 排序的。如果是这样,数字2怎么会有索引0。2在1和3之间,所以我不明白这种排序是如何工作的。请解释一下。

最佳答案

本质上,np.lexsort((first_names, last_names)) 表示:首先按 last_name 排序,然后按 first_name 排序

阅读documentation ,特别是位于“对两列数字进行排序:”下的示例,揭示了很多内容。本质上,您首先按 last_name 排序,这会重新排序,以便索引 1 (其值为 1)位于第一个,索引 2 (其值为值为 2) 是第二个,索引 0(其值为 3)是第三个。按照此顺序,排序后的 last_name 最终为 (1,2,3),即已排序。然后,如果有任何平局,first_name 中相应的索引将成为平局打破者。

例如,考虑以下情况:

first_names = (5,5,4)
last_names = (3,1,1)

last_name 中的索引 12 之间存在联系(它们的值都是 1),该联系将被它们的值打破first_name 中的相应索引。在 first_name 的索引 12 处,索引 2(值 4)低于索引 1 (值 5),所以它将排在第一位。因此,生成的 lexsort 将是 [2,1,0]:

np.lexsort((first_names, last_names))
# array([2, 1, 0])

关于python - np.lexsort 背后的排序逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49460429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com