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

Numpy.unique处理三维数组指定axis=2未生效,咨询问题原因

np.unique指定axis=2没生效?原因在这

别搞错np.unique里axis参数的用法——它不是对每个轴上的子数组内部去重,而是把指定轴上的整个子数组当作一个整体,找重复的子数组去重。

看你的数组arr,形状是(3,3,2):

  • 用axis=0时,是把每一层(形状(3,2)的二维数组)当整体去重,所以会去掉重复的第0层和第2层,只留一个;
  • 用axis=1时,是把每一列(形状(3,2)的二维数组)当整体去重,所以会去掉重复的列;
  • 到axis=2时,是把第三轴上的每个元素对应的二维数组(形状(3,3))当整体去重。你的第三轴有两个这样的二维数组:
    # 第三轴第0个元素对应的二维数组
    [[1,1,1], [7,10,10], [1,1,1]]
    # 第三轴第1个元素对应的二维数组
    [[1,1,1], [1,1,1], [1,1,1]]
    
    这俩完全不一样,所以np.unique找不到重复的,自然返回原第三轴的两个数组,看起来就像没生效。

如果想把每个[1,1]这种子数组内部去重成[1],得换写法,比如用列表推导遍历每个子数组单独去重:

import numpy as np

arr = np.array([[[1,1], [1,1], [1,1]],
         [[7,1], [10,1], [10,1]],
         [[1,1], [1,1], [1,1]]])

# 遍历每个(2,)的子数组,内部去重
result = np.array([[np.unique(sub) for sub in row] for row in arr])
print(result)

输出结果:

[[[1] [1] [1]]
 [[7 1] [10 1] [10 1]]
 [[1] [1] [1]]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:01:20