• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    Python中where()函數的用法詳解

    來源:懂視網 責編:小OO 時間:2020-11-27 14:22:32
    文檔

    Python中where()函數的用法詳解

    where()的用法。首先強調一下,where()函數對于不同的輸入,返回的只是不同的。1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組。2當數組是二維數組時,滿足條件的數組值返回的是值的位置索引,因此會有兩組索引數組來表示值的位置。例如;
    推薦度:
    導讀where()的用法。首先強調一下,where()函數對于不同的輸入,返回的只是不同的。1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組。2當數組是二維數組時,滿足條件的數組值返回的是值的位置索引,因此會有兩組索引數組來表示值的位置。例如;

    本文主要和大家介紹了詳解Python中where()函數的用法,小編覺得挺不錯的,現在分享給大家,也給大家做個參,希望能幫助到大家。

    where()的用法

    首先強調一下,where()函數對于不同的輸入,返回的只是不同的。

    1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組

    2當數組是二維數組時,滿足條件的數組值返回的是值的位置索引,因此會有兩組索引數組來表示值的位置

    例如

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

    對numpy標準庫里的解釋做一個介紹:

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

    基于條件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]))

    兩種方法的示例代碼

    第一種用法

    np.where(conditions,x,y)

    if (condituons成立):

      數組變x

    else:

      數組變y

    import numpy as np
    '''
    x = np.random.randn(4,4)
    print(np.where(x>0,2,-2))
    #試試效果
    xarr = np.array([1.1,1.2,1.3,1.4,1.5])
    yarr = np.array([2.1,2.2,2.3,2.4,2.5])
    zarr = np.array([True,False,True,True,False])
    result = [(x if c else y)
     for x,y,c in zip(xarr,yarr,zarr)]
    print(result)
    
    #where()函數處理就相當于上面那種方案
    
    result = np.where(zarr,xarr,yarr)
    print(result)
    
    '''
    #發現個有趣的東西
    # #處理2組數組
    # #True and True = 0
    # #True and False = 1
    # #False and True = 2
    # #False and False = 3
    
    cond2 = np.array([True,False,True,False])
    cond1 = np.array([True,True,False,False])
    #第一種處理 太長太丑
    result = []
    for i in range(4):
     if (cond1[i] & cond2[i]): result.append(0);
     elif (cond1[i]): result.append(1);
     elif (cond2[i]): result.append(2);
     else : result.append(3);
    print(result)
    #第二種 直接where() 很快很方便
    result = np.where(cond1 & cond2,0,np.where(cond1,1,np.where(cond2,2,3)))
    print(result)
    #第三種 更簡便(好像這跟where()函數半毛錢的關系都沒有
    result = 1*(cond1 & -cond2)+2*(cond2 & -cond1)+3*(-(cond1 | cond2)) (沒想到還可以這么表達吧)
    print(result)

    第二種用法

    where(conditions)

    相當于給出數組的下標

    x = np.arange(16)
    print(x[np.where(x>5)])
    #
    輸出:(array([ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], dtype=int64),) x = np.arange(16).reshape(-1,4) print(np.where(x>5)) #(array([1, 1, 2, 2, 2, 2, 3, 3, 3, 3], dtype=int64), array([2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64)) #注意這里是坐標是前面的一維的坐標,后面是二維的坐標
    ix = np.array([[False, False, False],
     [ True, True, False],
     [False, True, False]], dtype=bool)
    print(np.where(ix))
    #
    輸出:(array([1, 1, 2], dtype=int64), array([0, 1, 1], dtype=int64))

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Python中where()函數的用法詳解

    where()的用法。首先強調一下,where()函數對于不同的輸入,返回的只是不同的。1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組。2當數組是二維數組時,滿足條件的數組值返回的是值的位置索引,因此會有兩組索引數組來表示值的位置。例如;
    推薦度:
    標簽: 詳解 的用法 python
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲一级Av无码毛片久久精品| 国产欧美精品一区二区色综合 | 国产99视频精品免视看7| 色欲精品国产一区二区三区AV| 亚洲精品无码午夜福利中文字幕| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 国产精品日日摸夜夜添夜夜添1国产精品va欧美精 | 国产精品爱搞视频网站 | 久久无码精品一区二区三区| 欧洲精品码一区二区三区免费看| 亚洲精品国产av成拍色拍| 国产福利精品在线观看| 麻豆国产高清精品国在线| 国产一精品一av一免费爽爽| 国产成人精品一区在线| AAA级久久久精品无码片| 亚洲精品国产美女久久久| 欧美精品一区二区久久| 国产精品女同一区二区久久| 精品一区二区三区免费| 国产精品久久久亚洲| 国产精品H片在线播放| 精品日产一区二区三区手机| 精品日韩亚洲AV无码| 国产精品视频全国免费观看| 青青草国产精品久久| 欧美精品成人3d在线| 国产精品99在线播放| 91大神精品全国在线观看| 亚洲国模精品一区| 99久久人妻无码精品系列| 无码国产精品一区二区免费3p| 午夜在线视频91精品| 97久久国产亚洲精品超碰热| 日韩精品久久无码中文字幕| 99久久国产综合精品五月天喷水 | 中文字幕精品视频在线| 亚洲精品无码日韩国产不卡?V| 精品无码久久久久久久久久| 国产精品亚洲一区二区三区在线| 老司机亚洲精品影院无码|