首页 > 解决方案 > 在 3D numpy 数组中查找唯一的元组

问题描述

我正在尝试在 numpy 数组中找到唯一元组,但无法找到。根据我np.unique在设置轴的值时尝试的其他 SO 答案,但它并没有提供我正在寻找的东西。这是一个例子:

我有以下数组

b = np.array([[[255, 0, 0], [255, 0, 0]], [[255, 0, 0], [0, 0, 0]]])

我正在寻找一种方法来告诉我它有两个元组:(255, 0, 0) 和 (0, 0, 0)。以下是使用的结果np.unique

np.unique(b, axis=0)

array([[[255,   0,   0],
        [  0,   0,   0]],

       [[255,   0,   0],
        [255,   0,   0]]])


np.unique(b, axis=1)

array([[[255,   0,   0],
        [255,   0,   0]],

       [[  0,   0,   0],
        [255,   0,   0]]])

np.unique(b, axis=2)

array([[[  0, 255],
        [  0, 255]],

       [[  0, 255],
        [  0,   0]]])

我如何让它返回[255, 0, 0], [0, 0, 0]

标签: pythonnumpy

解决方案


先把 b 变成 Nx3 数组。然后使用独特的。

>>> np.unique(b.reshape(-1, 3), axis=0)
array([[  0,   0,   0],
       [255,   0,   0]])

推荐阅读