首页 > 解决方案 > 如何在 numpy 数组中找到唯一的对象?

问题描述

似乎并非在所有情况下都np.unique完全支持:objects

v = np.array(["abc",None,1,2,3,"3",2])
np.unique(v, return_counts=True)

结果是

TypeError:“NoneType”和“str”的实例之间不支持“<”

我可以这样做,但这会失去和np.unique(v.astype(str))之间的区别。这是唯一的方法吗?3"3"

标签: pythonnumpyunique

解决方案


一种方法是为__lt__数组中的所有对象定义。另一种不需要排序且仅依赖于相等运算符(仅适用于可清洗对象)的更简单方法是在 python 中使用 set:

np.array(list(set(v)))

输出:

array([1, 2, 3, None, '3', 'abc'], dtype=object)

推荐阅读