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

如何从ndarray每行选取不重复的最小/次小值存入列表?

解决方法

核心思路

利用集合快速查重的特性,结合每行已排序的前提,逐行遍历元素:优先选取每行最小的未重复值,找到后立即停止当前行的遍历,处理下一行。

代码实现

import numpy as np

# 输入的4×4 ndarray
arr = np.array([[1,10,20,30],[10,50,60,70],[10,20,50,60],[1,20,25,65]])
result = []
# 用集合记录已选值,O(1)时间复杂度查重
seen = set()

# 外层循环遍历每一行
for row in arr:
    # 内层循环遍历当前行的元素(从小到大)
    for num in row:
        if num not in seen:
            result.append(num)
            seen.add(num)
            break  # 找到符合条件的值,跳出当前行的循环

print(result)  # 输出: [1, 10, 20, 25]

关键说明

  • 用seen集合而非列表做查重:集合的成员判断操作效率远高于列表,避免数据量大时性能下降。
  • 无需手动维护索引:直接遍历行内元素,利用每行已排序的特性,第一个未出现在seen中的元素就是当前行符合要求的最小可用值,从根本上避免索引逻辑错误。
  • 内层循环的break:确保每行只选一个值,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 23:33:16