我试图比较两者,一个是pandas.unique(),另一个是numpy.unique(),我发现后者实际上超过了第一个。
我不确定是否是线性的。
有人可以告诉我为什么在代码实现方面存在这种差异吗?在什么情况下应该使用哪种?
谢谢。我是Stackoverflow的新手,对不起,如果我问得太多。
答案 0 :(得分:0)
np.unique()将数据视为数组,因此它会分别遍历每个值,然后标识唯一字段。
而pandas已预先构建了包含此信息的元数据,而pd.unique()只是调用包含“独特”信息的元数据,因此不必再次计算。
答案 1 :(得分:-1)
很难说没有详细检查代码,但我怀疑这是由于pandas
的矢量化性质和Numpy
的数组方向所致。
pandas
在Series
中组织数据,这可能有助于缓存局部性并简化对唯一值的搜索。此外,pandas
中的操作是根据需要执行的,这意味着您可以迭代到所讨论的Series
的唯一值。这样的操作通常不需要额外的内存(或至少不需要太多)。
我不知道Numpy
中有任何此类优化。对于数组来说,要困难得多。但是,我并不感到惊讶-Numpy
有时效率很低,并且pandas
不断得到改进。
此外,pandas
似乎更适合于大数据处理,而Numpy
则适合于较小规模的数字运算。