numpy.unique的二维等价版本

3
我有一组离散的坐标,存储在一个Nx2的numpy.ndarray中。
我想要获得每个唯一坐标集的计数和索引。虽然numpy.unique可以完成这个任务,但只适用于标量元素。
使用numpy,是否有某种简洁的方法来实现这一点?
示例:
#input
coor = np.array([[10,10],[12,9],[10,5],[12,9]]) 
#output
unique_count = np.array([1,2,1])
unique_index = np.array([0,1,2]) #1 could also be 3

编辑: unique count,将给出每个唯一值的计数,即:[10,10]有1个,[12,9]有2个,[10,5]有1个。然后使用coor[unique_index]找到对应的值。


你能否更详细地解释一下unique_count和unique_index的内容?我不太理解。 - Ohumeronen
因为我想要坐标对的索引,而不是X/Y坐标本身的计数。 - M.T
我开始理解... - Ohumeronen
1个回答

1
你可以使用列表的方法.count().index()
coor = np.array([[10, 10], [12, 9], [10, 5], [12, 9]])
coor_tuple = [tuple(x) for x in coor]
unique_coor = sorted(set(coor_tuple), key=lambda x: coor_tuple.index(x))
unique_count = [coor_tuple.count(x) for x in unique_coor]
unique_index = [coor_tuple.index(x) for x in unique_coor]

我尝试了一下,但得到了以下输出(array([5, 9, 10, 12]), array([5, 3, 0, 2]), array([1, 2, 3, 2])),=> 有3个10,2个129,还有1个5。我认为在计算唯一值之前它可能会将数组压平,因为索引也是如此。 - M.T
是的,你说得对,看我的编辑。我不认为这是实现你想要的最快的方法,但它可以工作。 - Ghilas BELHADJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接