numpy.unique,保留顺序 [英] numpy.unique with order preserved

查看:651
本文介绍了numpy.unique,保留顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

['b','b','b','a','a','c','c']

numpy.unique提供

numpy.unique gives

['a','b','c']

如何保存原始订单

['b','a','c']


好答案.奖金问题.为什么这些方法都不适用于该数据集? http://www.uploadmb.com/dw.php?id=1364341573 这是 numpy排序奇怪行为的问题


Great answers. Bonus question. Why do none of these methods work with this dataset? http://www.uploadmb.com/dw.php?id=1364341573 Here's the question numpy sort wierd behavior

推荐答案

unique()很慢,O(Nlog(N)),但是您可以通过以下代码来做到这一点:

unique() is slow, O(Nlog(N)), but you can do this by following code:

import numpy as np
a = np.array(['b','a','b','b','d','a','a','c','c'])
_, idx = np.unique(a, return_index=True)
print(a[np.sort(idx)])

输出:

['b' 'a' 'd' 'c']

对于大数组O(N),

Pandas.unique()要快得多:

Pandas.unique() is much faster for big array O(N):

import pandas as pd

a = np.random.randint(0, 1000, 10000)
%timeit np.unique(a)
%timeit pd.unique(a)

1000 loops, best of 3: 644 us per loop
10000 loops, best of 3: 144 us per loop

这篇关于numpy.unique,保留顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆