色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

python numpy中setdiff1d的用法說明

瀏覽:21日期:2022-06-21 16:22:59
一、函數解釋

setdiff1d(ar1, ar2, assume_unique=False)

1.功能:找到2個數組中集合元素的差異。

2.返回值:在ar1中但不在ar2中的已排序的唯一值。

3.參數:

ar1:array_like 輸入數組。

ar2:array_like 輸入比較數組。

assume_unique:bool。如果為True,則假定輸入數組是唯一的,即可以加快計算速度。 默認值為False。

二、具體示例1.assume_unique = False的情況:

a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.setdiff1d(a, b) print(c)#[1 2 3] a = np.array([1,2,3]) b = np.array([1,2,3]) c = np.setdiff1d(a, b) print(c)#[] a = np.array([1,2,3]) b = np.array([2,3,4]) c = np.setdiff1d(a, b) print(c)#[1] a = np.array([1,2,3,4]) b = np.array([3,4,5,6]) c = np.setdiff1d(a, b) print(c)#[1 2] a = np.array([1,2,3,2,4,1]) b = np.array([3,4,5,6]) c = np.setdiff1d(a, b) print(c)#[1 2] a = np.array([8,2,3,2,4,1]) b = np.array([7,4,5,6,3]) c = np.setdiff1d(a, b) print(c)#[1 2 8]

可以從最后看出返回的值從小到大排序,并且唯一。(8在a的第1位,2在a中重復了2次)

2.assume_unique = True的情況:

a = np.array([3,2,1]) b = np.array([4,5,6]) c = np.setdiff1d(a, b,True) print(c)#[3 2 1] a = np.array([8,2,3,2,4,1]) b = np.array([7,4,5,6,3]) c = np.setdiff1d(a, b,True) print(c)#[8 2 2 1] a = np.array([8,2,3,4,2,4,1]) b = np.array([7,9,5,6,3]) c = np.setdiff1d(a, b,True) print(c)#[8 2 4 2 4 1]

可以看出把在a中的但是不在b中的元素按a中的順序排序,并且不合并重復的元素,即假定輸入數組也是唯一的,因此相比于False確實提升了運算速度。

三、整體代碼

import numpy as np def main(): a = np.array([1,2,3]) b = np.array([4,5,6]) c = np.setdiff1d(a, b) print(c)#[1 2 3] a = np.array([1,2,3]) b = np.array([1,2,3]) c = np.setdiff1d(a, b) print(c)#[] a = np.array([1,2,3]) b = np.array([2,3,4]) c = np.setdiff1d(a, b) print(c)#[1] a = np.array([1,2,3,4]) b = np.array([3,4,5,6]) c = np.setdiff1d(a, b) print(c)#[1 2] a = np.array([1,2,3,2,4,1]) b = np.array([3,4,5,6]) c = np.setdiff1d(a, b) print(c)#[1 2] a = np.array([8,2,3,2,4,1]) b = np.array([7,4,5,6,3]) c = np.setdiff1d(a, b) print(c)#[1 2 8] a = np.array([3,2,1]) b = np.array([4,5,6]) c = np.setdiff1d(a, b,True) print(c)#[3 2 1] a = np.array([8,2,3,2,4,1]) b = np.array([7,4,5,6,3]) c = np.setdiff1d(a, b,True) print(c)#[8 2 2 1] a = np.array([8,2,3,4,2,4,1]) b = np.array([7,9,5,6,3]) c = np.setdiff1d(a, b,True) print(c)#[8 2 4 2 4 1] if __name__ == ’__main__’: main()

python numpy中setdiff1d的用法說明

補充: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_temp=x[mask]

該例旨在查找 x 的第二列值中與d向量中第二個元素相同的部分 ,并返回mask邏輯向量;然后x_temp返回x中mask邏輯值為True的行。

mask向量的類型為bool,查看具體值下圖所示:

python numpy中setdiff1d的用法說明

python numpy中setdiff1d的用法說明

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

演示見下圖:

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

python numpy中setdiff1d的用法說明

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

python numpy中setdiff1d的用法說明

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: mm在线视频免费看 | 香蕉国产人午夜视频在线观看 | 日本一级大黄毛片免费基地 | 久热精品6| 91精品国产免费久久国语蜜臀 | 欧美日韩 在线播放 | 亚洲 [12p]| 美女视频网站永久免费观看软件 | 久久国产高清 | 国产精品一 | 欧美成人h版在线观看 | 国产网址在线 | 理论视频在线观看 | 欧美一区二区三区久久综合 | 欧美一级亚洲一级 | 日本成人在线视频网站 | 国产精品成久久久久三级 | 国内精品免费一区二区三区 | 成人中文字幕在线高清 | 大片在线播放日本一级毛片 | 成年人免费在线视频网站 | 在线精品视频免费观看 | 日本一级特黄aa毛片免费观看 | 久久国内精品自在自线观看 | 亚洲人成网站观看在线播放 | 亚洲偷自拍另类图片二区 | 老外黑人欧美一级毛片 | 美国一级特a黄 | 日韩欧美视频一区 | 精品国产欧美一区二区 | 91久久精一区二区三区大全 | 国产性tv国产精品 | 国产精品_国产精品_国产精品 | 欧美一级成人一区二区三区 | 欧美一级爆毛片 | 91久久国产综合精品女同国语 | 日韩中文精品亚洲第三区 | 天天看片天天爽_免费播放 天天看夜夜 | 日韩一区二区在线观看 | 嫩草影院成人 | 2020国产成人免费视频 |