• 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]))
  • 相关阅读:
    为Qtcreator 编译的程序添加管理员权限
    热备,冷备,云备
    最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
    进入2012 -- 回顾我走过的编程之路
    为什么中国程序员水平一直上不了层次?无非是这些原因!
    我是如何失去团队掌控的?
    后端开发甩锅奥义
    一个线程oom,进程里其他线程还能运行吗?
    架构师必备,带你弄清混乱的JAVA日志体系!
    IDEA一定要改的八条配置
  • 原文地址:https://www.cnblogs.com/zz22--/p/8654395.html
Copyright © 2020-2023  润新知