You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从NumPy的ndarray中提取唯一值?

从NumPy ndarray中提取唯一值的正确方法

你用set(arr)报错是因为二维ndarray迭代时会逐行返回一维数组,而numpy数组属于不可哈希类型,无法直接存入集合。

以下是两种可靠的解决方法:

方法一:使用NumPy内置的np.unique()(推荐)

这是处理ndarray唯一值最直接的方式,支持任意维度的数组,默认会返回排序后的唯一值数组:

import numpy as np

arr = np.array([[1, 2, 2], [2, 2, 3]], np.int32)
unique_values = np.unique(arr)
print(unique_values)  # 输出: [1 2 3]

如果不需要排序结果,可以添加sorted=False参数:

unique_values = np.unique(arr, sorted=False)

还可以额外获取唯一值的首次出现索引、出现次数:

values, first_indices, counts = np.unique(arr, return_index=True, return_counts=True)
print(values)          # [1 2 3]
print(first_indices)   # [0 1 5](扁平化数组中首次出现的位置)
print(counts)          # [1 3 1](每个值的出现次数)

方法二:先扁平化数组再转集合

如果一定要用Python的set,需要先把多维数组扁平化为一维,再转换:

import numpy as np

arr = np.array([[1, 2, 2], [2, 2, 3]], np.int32)
unique_set = set(arr.flatten())  # 或者用arr.ravel()
print(unique_set)  # 输出: {1, 2, 3}(集合是无序的)

内容的提问来源于stack exchange,提问作者DanielBell99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:01:37