佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > python numpy中setdiff1d的用法說明

python numpy中setdiff1d的用法說明

熱門標(biāo)簽:Win7旗艦版 百度AI接口 呼叫中心市場(chǎng)需求 電話運(yùn)營中心 客戶服務(wù) 語音系統(tǒng) 企業(yè)做大做強(qiáng) 硅谷的囚徒呼叫中心

一、函數(shù)解釋

setdiff1d(ar1, ar2, assume_unique=False)

1.功能:找到2個(gè)數(shù)組中集合元素的差異。

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

3.參數(shù):

ar1:array_like 輸入數(shù)組。

ar2:array_like 輸入比較數(shù)組。

assume_unique:bool。如果為True,則假定輸入數(shù)組是唯一的,即可以加快計(jì)算速度。 默認(rèn)值為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中重復(fù)了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中的順序排序,并且不合并重復(fù)的元素,即假定輸入數(shù)組也是唯一的,因此相比于False確實(shí)提升了運(yùn)算速度。

三、整體代碼

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()
 

補(bǔ)充:Python編程之numpy庫函數(shù)in1d的使用

最近利用Python作數(shù)值分析時(shí)使用到numpy庫下的in1d函數(shù)。in1d函數(shù)與excel中vlookup函數(shù)和MATLAB中ismember函數(shù)有相似之處。其作用在于在序列B中尋找與序列A相同的值,并返回一邏輯值(True,False)或邏輯值構(gòu)成的向量。

具體例子見下文

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

mask= np.in1d(x.values[:,1],d[1],invert=False) ##x為DataFrame型數(shù)據(jù),x.values[:,1]表示取第二列值
x_temp=x[mask]

示取第二列值

x_temp=x[mask]  

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

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

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

演示見下圖:

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

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Python 機(jī)器學(xué)習(xí)庫 NumPy入門教程
  • Python基礎(chǔ)之Numpy的基本用法詳解
  • Python基礎(chǔ)之numpy庫的使用
  • Python利用numpy實(shí)現(xiàn)三層神經(jīng)網(wǎng)絡(luò)的示例代碼
  • Python數(shù)據(jù)清洗工具之Numpy的基本操作
  • Python Numpy之linspace用法說明
  • python 將numpy維度不同的數(shù)組相加相乘操作
  • python numpy.power()數(shù)組元素求n次方案例
  • python中numpy.empty()函數(shù)實(shí)例講解
  • python中numpy數(shù)組與list相互轉(zhuǎn)換實(shí)例方法
  • Python OpenCV中的numpy與圖像類型轉(zhuǎn)換操作
  • Python機(jī)器學(xué)習(xí)三大件之一numpy

標(biāo)簽:長沙 崇左 安康 濟(jì)南 山西 海南 山西 喀什

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python numpy中setdiff1d的用法說明》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    贵德县| 沙河市| 邓州市| 息烽县| 江永县| 奉节县| 湖口县| 静乐县| 普格县| 常山县| 大方县| 大冶市| 邢台县| 光山县| 桓仁| 方正县| 谢通门县| 绩溪县| 青海省| 张家口市| 玉林市| 师宗县| 禄劝| 乌拉特后旗| 衡阳县| 陆丰市| 长葛市| 当阳市| 望江县| 乐安县| 开鲁县| 阿勒泰市| 陈巴尔虎旗| 关岭| 佛坪县| 金川县| 金乡县| 迁安市| 西藏| 中牟县| 鄂州市|