如何统计ndarray中所有子数组第三部分的唯一值数量?
解决方案
核心思路
遍历目标数组中的每个元组元素,提取每个元组的第三个数组,将所有数组的值扁平化后存入集合(利用集合自动去重的特性),最终集合的长度就是唯一值的数量。
代码实现
import numpy as np # 假设你的my_array已完成定义 unique_set = set() for item in my_array: # 兼容示例中mini_array1外层多一层列表的情况 target_tuple = item[0] if isinstance(item[0], tuple) else item # 取出第三个数组并扁平化 third_array = target_tuple[2] unique_set.update(third_array.ravel()) # 输出唯一值数量 print(len(unique_set)) # 示例中会输出5
细节说明
ravel()用于将多维数组转为一维,相比flatten()更高效(返回数组视图而非副本)- 集合的
update()方法可以直接批量添加数组中的所有元素,自动忽略重复值 - 代码中的结构判断是为了适配你示例里mini_array1外层多了一层列表的情况,如果你的
my_array中所有元素都是直接的元组(如mini_array2、3),可以简化为third_array = item[2]
内容的提问来源于stack exchange,提问作者Abigail9988
相关产品推荐
相关产品推荐

