zoukankan      html  css  js  c++  java
  • Python中where()函数的用法

    where()的用法

    首先强调一下,where()函数对于不同的输入,返回的只是不同的。

    1当数组是一维数组时,返回的值是一维的索引,所以只有一组索引数组

    2当数组是二维数组时,满足条件的数组值返回的是值的位置索引,因此会有两组索引数组来表示值的位置

    例如

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

     对numpy标准库里的解释做一个介绍:

    numpy.where(condition[, xy])

    基于条件condition,返回值来自x或者y.

    如果.

    参数:

    condition : 数组,bool值

    When True, yield x, otherwise yield y.

    x, y : array_like, 可选

    x与y的shape要相同,当condition中的值是true时返回x对应位置的值,false是返回y的

    返回值:

    out : ndarray or tuple of ndarrays

    ①如果参数有condition,x和y,它们三个参数的shape是相同的。那么,当condition中的值是true时返回x对应位置的值,false是返回y的。

    ②如果参数只有condition的话,返回值是condition中元素值为true的位置索引,切是以元组形式返回,元组的元素是ndarray数组,表示位置的索引

     
    >>> np.where([[True, False], [True, True]],
    ...          [[1, 2], [3, 4]],
    ...          [[9, 8], [7, 6]])
    array([[1, 8],
           [3, 4]])
    >>>
    >>> np.where([[0, 1], [1, 0]])
    (array([0, 1]), array([1, 0]))
    >>>
    >>> x = np.arange(9.).reshape(3, 3)
    >>> np.where( x > 5 )
    (array([2, 2, 2]), array([0, 1, 2]))
    >>> x[np.where( x > 3.0 )]               # Note: result is 1D.
    array([ 4.,  5.,  6.,  7.,  8.])
    >>> np.where(x < 5, x, -1)               # Note: broadcasting.
    array([[ 0.,  1.,  2.],
           [ 3.,  4., -1.],
           [-1., -1., -1.]])
    Find the indices of elements of x that are in goodvalues.
    
    >>>
    >>> goodvalues = [3, 4, 7]
    >>> ix = np.in1d(x.ravel(), goodvalues).reshape(x.shape)
    >>> ix
    array([[False, False, False],
           [ True,  True, False],
           [False,  True, False]], dtype=bool)
    >>> np.where(ix)
    (array([1, 1, 2]), array([0, 1, 1]))
  • 相关阅读:
    FZU 2112 并查集、欧拉通路
    HDU 5686 斐波那契数列、Java求大数
    Codeforces 675C Money Transfers 思维题
    HDU 5687 字典树插入查找删除
    HDU 1532 最大流模板题
    HDU 5384 字典树、AC自动机
    山科第三届校赛总结
    HDU 2222 AC自动机模板题
    HDU 3911 线段树区间合并、异或取反操作
    CodeForces 615B Longtail Hedgehog
  • 原文地址:https://www.cnblogs.com/zz22--/p/8654395.html
Copyright © 2011-2022 走看看