从Numpy Array中提取信息

时间:2015-07-21 13:50:08

标签: python arrays numpy

我有信息存储在结构数组中,dtype为time,x,y,x和cnt。

 time              x                y                 z       cnt
 41641            1428              0                 3      2554
 42152            1428              0                 3      2554
 42602            1428              0                 3      2554
 43627            1428              1                 3      2554
 44075            1428              0                 3      2555
 44552            1428              1                 3      2555
 44901            1428              1                 3      2556
 45377            1428              0                 3      2557
 45889            1428              0                 3      2557
 46519            1428              0                 3      2557
 47680            1428              1                 3      2557
 48056            1428              0                 3      2558
 48416            1428              0                 3      2558
 49270            1428              1                 3      2558

我想从每个重复的cnt参数中提取第一行:

 41641            1428              0                 3      2554
 44075            1428              0                 3      2555
 44901            1428              1                 3      2556
 45377            1428              0                 3      2557
 48056            1428              0                 3      2558

2 个答案:

答案 0 :(得分:1)

带有numpy.unique

return_index=True会为您提供一份索引列表。尝试类似这样(非常不合适)的尝试。

cnt = structArray['cnt']
uniq = numpy.unique(cnt, return_index=True)
result = structArray[uniq]

当然你可以把它折成一个单行。

答案 1 :(得分:1)

您可以使用numpy.unique

执行此操作

如果您的数据数组被调用data

print data[np.unique(data[:,4],return_index=True)[1]]

#[[41641  1428     0     3  2554]
# [44075  1428     0     3  2555]
# [44901  1428     1     3  2556]
# [45377  1428     0     3  2557]
# [48056  1428     0     3  2558]]