在numpy列中找到不同的元素

时间:2017-10-14 11:06:50

标签: python numpy

我正在使用numpy在numpy数组的第一列中找到不同的元素我正在使用下面的代码我也看看np.unique方法但我找不到合适的函数

k = 0
c = 0
nonrep=[]
for i in range(len(xin)):
    for j in range(len(nonrep)):
        if(xin[i,0]==nonrep[j]):
         c = c+1
    if(c==0):
     nonrep.append(xin[i,0])
    c=0

我相信我可以使用numpy库更好更快地完成它,如果你帮助我找到更好更快的方法,我会很高兴

1 个答案:

答案 0 :(得分:2)

这绝对不是一个好方法。从这里开始执行成员资格检查。此外,在找到元素后,您甚至不会break。这使它成为 O(n 2 算法。

使用numpy O(n log n),无订单

您可以简单地使用:

np.unique(xin[:,0])

这将在 O(n log n)中起作用。这仍然不是最有效的方法。

使用pandas O(n),订购

如果您确实需要快速计算,可以更好地使用pandas

import pandas as pd

pd.DataFrame(xin[:,0])[0].unique()

这适用于 O(n)(给定元素可以有效散列)并进一步保留顺序。这里的结果又是一个numpy数组。

喜欢@ B.M.他们在评论中说,你可以阻止构建一个1列的数据帧,而是构建一个序列:

import pandas as pd

pd.Series(xin[:,0]).unique()