• python输出多维数组最大值、最小值和指定值的全部索引值index


    argmax&argmin

    查询最小值索引的常规操作是:np.argmin(data)
    在这里插入图片描述
    这里的4代表:将数组降成一维后最小值的索引,即[5,2,3,2,1,2,1,4,6,6,5,1]的第一个1的索引。

    局限性:

    ①我们需要的索引是二维或者多维的,4不是我们想要的,我们需要的是(2,1)
    ②当存在多个最大值时,argmax只会返回第一个最大值的索引,不能返回全部的索引值
    ③只能返回最大最小值的索引,如果我们想返回指定值6的对应的索引呢?

    输出多维数组最大值、最小值的全部索引值

    以最小值为例,data为三维数组,直接上代码。

    def min_index(data): # 寻找最小值的所有索引
        index = []  # 创建列表,存放最小值的索引
        # data = data.A  # 若data是矩阵,需先转为array,因为矩阵ravel后仍是二维的形式,影响if环节
        dim_1 = data.ravel()  # 转为一维数组
        min_n = min(dim_1)  # 最大值max_n
        for i in range(len(dim_1)):
            if dim_1[i] == min_n:  # 遍历寻找最大值,并全部索引值进行操作
                pos = np.unravel_index(i, data.shape, order='C')  # 返回一维索引对应的多维索引,譬如4把转为(1,1),即一维中的第5个元素对应在二维里的位置是2行2列
                index.append(pos)  # 存入index
        return np.array(index)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    data = np.array([[[3,2,3],[1,3,2],[1,4,6],[6,5,1]],[[1,2,3],[1,3,2],[1,4,6],[6,5,1]]])
    min_index(data)
    # 输出
    # array([[0, 1, 0],
    #        [0, 2, 0],
    #        [0, 3, 2],
    #        [1, 0, 0],
    #        [1, 1, 0],
    #        [1, 2, 0],
    #        [1, 3, 2]], dtype=int64)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    输出多维数组指定值的全部索引值

    data依旧是三维数组,直接上代码。

    def select_index(data, value): # 寻找指定值的所有索引
        index = []  # 创建列表,存放最大值的索引
        # data = data.A  # 若data是矩阵,需先转为array,因为矩阵ravel后仍是二维的形式,影响if环节
        dim_1 = data.ravel()  # 转为一维数组
        for i in range(len(dim_1)):
            if dim_1[i] == value:  # 遍历寻找最大值,并全部索引值进行操作
                pos = np.unravel_index(i, data.shape, order='C')  # 返回一维索引对应的多维索引
                index.append(pos)  # 存入index
        return np.array(index)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    data = np.array([[[3,2,3],[1,3,2],[1,4,6],[6,5,1]],[[1,2,3],[1,3,2],[1,4,6],[6,5,1]]])
    select_index(data, 5)
    # 输出
    # array([[0, 3, 1],
    #        [1, 3, 1]], dtype=int64)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    一文带你吃透操作系统
    msys2 + MSVC(VS2019)编译ffmpeg6.0源码
    如何提取Matlab可视化图像窗口Figure中的坐标信息
    矩阵系统全方位管理多平台1000多个账号,实现精准化运营获客!
    在CentOS 7系统安装StoneDB数据库
    相机Camera
    翻译软件哪个准确度高
    Flink技术简介与入门实践
    SV-315C 15寸触模屏 I3工控机 网络广播主机
    论文解读(BSFDA)《Black-box Source-free Domain Adaptation via Two-stage Knowledge Distillation》
  • 原文地址:https://blog.csdn.net/weixin_45928096/article/details/126011986