首页 > 解决方案 > Python:获取 3D 数组中的唯一标签编号

问题描述

我有一个 3D 数组。每个 2D 切片都有标签编号,其编号可能介于 1 到 1800 之间。现在我想检查某些标签编号是否仅沿 z 轴出现一次。所以我的想法是遍历 3d 数组并使用 numpy.unique。但我想知道是否有更聪明的方法来获得这些独特的标签编号..

更新

这是我的一种方法,但我认为必须有更快的方法

import numpy as np
from collections import Counter
array = np.array([[[0,0,1],[1,2,4],[4,4,4]],[[5,5,1],[5,5,1],[4,4,4]],[[0,0,1],[2,2,4],[4,4,4]]])
uniqueNumbers=[]
for x in range(len(array)):
    uniqueNumbers.extend(np.unique(array[x]).tolist())
cnt = Counter(uniqueNumbers)
ultimateUnique=([k for k, v in cnt.items() if v <= 1])
print(ultimateUnique)

输出

[5]

所以在这种情况下,只有标签 5 出现在切片 2 中并且应该被识别。

标签: pythonarraysnumpy

解决方案


推荐阅读