给出:
R=["ip1", "ip7", "ip12", "ip5", "ip2", "ip22", "ip7", "ip1", "ip17", "ip22"]
字符串
我想得到我的列表R
的唯一值及其相应的索引。
现在,我有name,idx=np.unique(R,return_inverse=True)
返回:
array(['ip1', 'ip12', 'ip17', 'ip2', 'ip22', 'ip5', 'ip7'], dtype='<U4') # name
[0 6 1 5 3 4 6 0 2 4] # idx
型
但我想使用自定义排序,结果如下:
['ip1', 'ip2', 'ip5', 'ip7', 'ip12', 'ip17', 'ip22']
[0 3 4 2 1 6 3 0 5 6]
型
在list
中,我可以将Rs=sorted(R, key=lambda x: int(x[2:]))
与自定义的key
一起使用,但我无法获得唯一值和相应的索引。
有没有什么方法可以操作排序键np.unique
,或者已经有更好的方法来处理这个问题?
3条答案
按热度按时间rur96b6h1#
转换为int后运行
unique
:字符串
产出:
型
ki0zmccv2#
在代码中做修改后。我得到了想要的输出。
字符串
输出量:
型
nwwlzxa73#
由于你已经在使用numpy了,你可能会发现使用numpy将字符串转换为整数比在python中循环遍历列表更快。
首先,让我们将
R
定义为np.ndarray
:字符串
我们可以将其拆分为一个2d字符数组,如下所示:
型
然后,切出前两个字符:
型
并合并组合切片数组的字符:
型
现在你已经有了所有的整数,你可以在
R_ints
上使用np.unique
来获得排序的唯一元素的索引:型
最后创建
names
作为R[i]
:型