数据科学:numpy.where() 的用法

Posted volcao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据科学:numpy.where() 的用法相关的知识,希望对你有一定的参考价值。

numpy.where() 有两种用法:

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

  • 满足条件(condition),输出x,不满足输出y
  • 情景(一)

  • >>> 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])
    
    >>> np.where([[True,False], [True,True]],    # 官网上的例子
                 [[1,2], [3,4]],
                 [[9,8], [7,6]])
    array([[1, 8],
           [3, 4]])

     

  • 情景(二)

  • >>> a = 10
    >>> np.where([[a > 5,a < 5], [a == 10,a == 7]],
                 [["chosen","not chosen"], ["chosen","not chosen"]],
                 [["not chosen","chosen"], ["not chosen","chosen"]])
    
    array([[chosen, chosen],
           [chosen, chosen]], dtype=<U10)

     

2. np.where(condition)

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

  • >>> a = np.array([2,4,6,8,10])
    >>> np.where(a > 5)             # 返回索引
    (array([2, 3, 4]),)   
    >>> a[np.where(a > 5)]              # 等价于 a[a>5]
    array([ 6,  8, 10])
    
    >>> np.where([[0, 1], [1, 0]])
    (array([0, 1]), array([1, 0]))
  • 上面这个例子条件中[[0,1],[1,0]]的真值为两个1,各自的第一维坐标为[0,1],第二维坐标为[1,0] 。

 

以上是关于数据科学:numpy.where() 的用法的主要内容,如果未能解决你的问题,请参考以下文章

numpy.where() 用法详解

numpy.where用法

numpy 之 np.where

Pandas 掩码 / where 方法与 NumPy np.where

PYTHON 如何使用 numpy.where 添加包含下一行数据框中的数据的列?

使用 numpy.where() 在给定范围内的两个数组中搜索元素