如何将无序列表映射到从 1 开始的有序列表?
How to map an unordered gapped list to an orderd list beginnig from 1?
我有一个很大的无序数字列表,它们不是从一个开始的,并且它们之间有任意间隔。 python 中是否有任何命令或方式(可逆)生成另一个有序的数字列表,从一个数字开始没有间隙?
示例:
from this:
[24608 25901 25901 27352 27352 25063 25065 24330 24330 23111 23111 23111 25253 25252 25901 27352 23111]
to this
[1 2 2 3 3 4 5 6 6 7 8 8 8 9 2 3 8]
您可以使用 pandas.factorize
:
a = np.array([24608, 25901, 25901, 27352, 27352, 25063, 25065, 24330, 24330,
23111, 23111, 23111, 25253, 25252, 25901, 27352, 23111])
import pandas as pd
b = pd.factorize(a)[0]+1
输出:
array([1, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 7, 8, 9, 2, 3, 7])
我有一个很大的无序数字列表,它们不是从一个开始的,并且它们之间有任意间隔。 python 中是否有任何命令或方式(可逆)生成另一个有序的数字列表,从一个数字开始没有间隙?
示例:
from this:
[24608 25901 25901 27352 27352 25063 25065 24330 24330 23111 23111 23111 25253 25252 25901 27352 23111]
to this
[1 2 2 3 3 4 5 6 6 7 8 8 8 9 2 3 8]
您可以使用 pandas.factorize
:
a = np.array([24608, 25901, 25901, 27352, 27352, 25063, 25065, 24330, 24330,
23111, 23111, 23111, 25253, 25252, 25901, 27352, 23111])
import pandas as pd
b = pd.factorize(a)[0]+1
输出:
array([1, 2, 2, 3, 3, 4, 5, 6, 6, 7, 7, 7, 8, 9, 2, 3, 7])