• np.where() 条件索引和SQL的if用法一样,或者是给出满足条件的坐标集合


    np.where()

    numpy.where(condition[, x, y])

    参数:

    condition:array_like, bool,如果为True,则产生x,否则产生y

    x, y:array_like,从中选择的值

    numpy.where() 有两种用法:

    1. np.where(condition, x, y)

    满足条件(condition),输出x,不满足输出y。

    import numpy as np
    aa = np.arange(10)
    np.where(aa,1,-1)
    #array([-1,  1,  1,  1,  1,  1,  1,  1,  1,  1])  # 0为False,所以第一个输出-1
    np.where(aa > 5,1,-1)
    #array([-1, -1, -1, -1, -1, -1,  1,  1,  1,  1])

    2. np.where(condition)

    只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标(比如x,y,z分别作为一个元祖)

    a = np.arange(27).reshape(3,3,3)
    '''
    array([[[ 0,  1,  2],
            [ 3,  4,  5],
            [ 6,  7,  8]],
    
           [[ 9, 10, 11],
            [12, 13, 14],
            [15, 16, 17]],
    
           [[18, 19, 20],
            [21, 22, 23],
            [24, 25, 26]]])
    '''
    np.where(a > 5)
    (array([0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2],
           dtype=int64),
     array([2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2, 0, 0, 0, 1, 1, 1, 2, 2, 2],
           dtype=int64),
     array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2],
           dtype=int64))

    np.where会输出每个元素的对应的坐标,因为原数组有三维,所以tuple中有三个数组

     https://numpy.org/doc/stable/reference/generated/numpy.where.html

  • 相关阅读:
    高斯消元算法
    Fermat小定理的证明
    Pollard Rho 算法简介
    做一些无聊的题
    永远不要相信自己的傲慢
    笔记-数据结构进阶
    笔记-区间问题
    线段树板子
    [DarkBZOJ3694] 最短路
    [CF321D] Ciel and Flipboard
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/13712227.html
Copyright © 2020-2023  润新知