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

Python:移除NumPy数组中的重复元素并保留顺序

移除NumPy子数组重复项并保留原顺序

问题场景

你有一个包含重复NumPy子数组的列表,需要移除重复项且保留元素的原始出现顺序——list(set(my_array))因NumPy数组不可哈希失效,np.unique()会改变元素顺序,都不符合需求。

解决方案

通过将子数组转换为可哈希的元组,结合遍历记录已出现元素的方式实现:

import numpy as np

# 示例输入数组列表
my_array = [
    np.array([1.4600e-01, 2.9575e+00, 6.1580e+02]),
    np.array([5.860e-01, 4.507e+00, 8.748e+02]),
    np.array([1.4600e-01, 2.9575e+00, 6.1580e+02]),
    np.array([5.860e-01, 4.507e+00, 8.748e+02]),
    np.array([9.6900e-01, 1.7822e+00, 1.0829e+04]),
    np.array([0.701, 1.6545, 603.3])
]

seen = set()
result = []
for arr in my_array:
    # 将数组转为元组,作为可哈希的键存入集合
    arr_tuple = tuple(arr)
    if arr_tuple not in seen:
        seen.add(arr_tuple)
        result.append(arr)

print(result)

代码说明

  • 转换为元组:NumPy数组本身不可哈希,无法直接加入集合,转为元组后可被集合识别。
  • 遍历去重:遍历原列表,用集合记录已出现的子数组对应的元组,只保留第一次出现的子数组,确保顺序不变。
  • 保留原类型:最终结果列表中的元素仍然是NumPy数组,符合需求。

执行上述代码后,输出结果即为无重复且顺序不变的子数组列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:50:27