1. 程式人生 > >Python程式設計之numpy庫函式in1d的使用

Python程式設計之numpy庫函式in1d的使用

         最近利用Python作數值分析時使用到numpy庫下的in1d函式。in1d函式與excel中vlookup函式和MATLAB中ismember函式有相似之處。其作用在於在序列B中尋找與序列A相同的值,並返回一邏輯值(True,False)或邏輯值構成的向量。具體例子見下文。

        設mask為邏輯值向量,矩陣x的第一列為待查詢向量,d為被查詢向量(或值),即查詢x中與d中指定元素相同的值,並返回邏輯值向量mask。mask是由一系列True和False值構成,True代表找到相同的值,而False代表沒找到相同的值。演示如下:

                                                   mask= np.in1d(x.values[:,1],d[1],invert=False) 

##x為DataFrame型資料,x.values[:,1]表示取第二列值

 x_temp=x[mask]   

      該例旨在查詢 x 的第二列值中與d向量中第二個元素相同的部分 ,並返回mask邏輯向量;然後x_temp返回x中mask邏輯值為True的行。mask向量的型別為bool,檢視具體值下圖所示:



     值得注意的地方在於in1d函式中invert引數的設定。當invert=True時,mask中的元素值為True的部分對x.values[:,1]中與當前查詢的元素d[i]不同的部分(i為當前查詢位置),相同的部分則為falseinvert=False時,mask中的元素值為True的部分對

x.values[:,1]中與當前查詢的元素d[i]相同的部分(i為當前查詢位置)。演示見下圖:

當mask= np.in1d(x.values[:,1],d[2],invert=True)


    當mask= np.in1d(x.values[:,1],d[2],invert=False)時