numpy中的掩碼數(shù)組的使用
numpy中有一個(gè)掩碼數(shù)組的概念,需要通過子模塊numpy.ma來創(chuàng)建,基本的創(chuàng)建方式如下
>>> import numpy as np >>> import numpy.ma as ma >>> a = np.arange(5) >>> a array([0, 1, 2, 3, 4]) >>> b = ma.masked_array(a, mask = [1, 1, 1, 0, 0]) >>> b masked_array(data = [-- -- -- 3 4], mask = [ True True True False False], fill_value = 999999) >>> np.min(a) 0 >>> np.min(b) 3
所謂掩碼,就是掩蓋的意思。上述代碼中,掩藏了數(shù)組的前3個(gè)元素,形成了一個(gè)新的掩碼數(shù)組,在該掩碼數(shù)組中,被掩藏的前3位用短橫杠表示,對(duì)原始數(shù)組和對(duì)應(yīng)的掩碼數(shù)組同時(shí)求最小值,可以看到,掩碼數(shù)組中只有未被掩藏的元素參與了計(jì)算。
掩碼數(shù)組賦予了我們重新選擇元素的權(quán)利,而不用改變矩陣的維度。在可視化領(lǐng)域,最典型的應(yīng)用就是繪制三角熱圖,代碼如下
import matplotlib.pyplot as plt import numpy as np import numpy.ma ?as ma data = np.random.rand(25 * 25).reshape(25, -1) mask = np.tri(data.shape[0], k= -1) data_masked = ma.array(data, mask=mask) fig, (ax1, ax2) = plt.subplots(1, 2) ax1.imshow(data) ax2.imshow(data_masked)
輸出結(jié)果如下
通過掩碼矩陣,可以輕松實(shí)現(xiàn)三角熱圖的繪制。在numpy.ma子模塊中,還提供了多種創(chuàng)建掩碼數(shù)組的方式,用法如下
>>> import numpy.ma as ma >>> a array([0, 1, 2, 3, 4]) # 等于2的元素被掩蓋 >>> ma.masked_equal(a, 2) masked_array(data = [0 1 -- 3 4], ? ? ? ? ? ? ?mask = [False False ?True False False], ? ? ? ?fill_value = 2) # 不等于2的元素被掩蓋 >>> ma.masked_not_equal(a, 2) masked_array(data = [-- -- 2 -- --], ? ? ? ? ? ? ?mask = [ True ?True False ?True ?True], ? ? ? ?fill_value = 999999) # 大于2的元素被掩蓋 >>> ma.masked_greater(a, 2) masked_array(data = [0 1 2 -- --], ? ? ? ? ? ? ?mask = [False False False ?True ?True], ? ? ? ?fill_value = 999999) # 小于2的元素被掩蓋 >>> ma.masked_less(a, 2) masked_array(data = [-- -- 2 3 4], ? ? ? ? ? ? ?mask = [ True ?True False False False], ? ? ? ?fill_value = 999999) # 大于等于2的元素被掩蓋 >>> ma.masked_greater_equal(a, 2) masked_array(data = [0 1 -- -- --], ? ? ? ? ? ? ?mask = [False False ?True ?True ?True], ? ? ? ?fill_value = 999999) # 小于等于2的元素被掩蓋 >>> ma.masked_less_equal(a, 2) masked_array(data = [-- -- -- 3 4], ? ? ? ? ? ? ?mask = [ True ?True ?True False False], ? ? ? ?fill_value = 999999) # 小于1大于3的元素被掩蓋 >>> ma.masked_outside(a, 1, 3) masked_array(data=[--, 1, 2, 3, --], ? ? ? ? ? ? ?mask=[ True, False, False, False, True], ? ? ? ?fill_value=999999) # 大于等于1,小于等于3的元素被掩蓋 >>> ma.masked_inside(a, 1, 3) masked_array(data=[0, --, --, --, 4], ? ? ? ? ? ? ?mask=[False, True, True, True, False], ? ? ? ?fill_value=999999)
利用掩碼數(shù)組,可以方便的處理缺失值或者被污染的值,只需要將對(duì)應(yīng)的元素掩碼即可,更多的用法請(qǐng)查閱官方的API文檔。
到此這篇關(guān)于numpy中的掩碼數(shù)組的使用的文章就介紹到這了,更多相關(guān)numpy 掩碼數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python操作MongoDb數(shù)據(jù)庫(kù)流程詳解
這篇文章主要介紹了Python操作MongoDb數(shù)據(jù)庫(kù)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03使用Django清空數(shù)據(jù)庫(kù)并重新生成
這篇文章主要介紹了使用Django清空數(shù)據(jù)庫(kù)并重新生成,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04通過實(shí)例解析python創(chuàng)建進(jìn)程常用方法
這篇文章主要介紹了通過實(shí)例解析python創(chuàng)建進(jìn)程常用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Python+Pytorch實(shí)戰(zhàn)之彩色圖片識(shí)別
這篇文章主要為大家詳細(xì)介紹了如何利用Python+Pytorch實(shí)現(xiàn)彩色圖片識(shí)別功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-09-09關(guān)于Python中模塊的簡(jiǎn)介、定義與使用
這篇文章主要介紹了關(guān)于Python中模塊的簡(jiǎn)介、定義與使用,模塊是Python的重要組成部分,需要的朋友可以參考下2023-04-04python詞云庫(kù)wordCloud使用方法詳解(解決中文亂碼)
這篇文章主要介紹了python詞云庫(kù)wordCloud使用方法詳解(解決中文亂碼),需要的朋友可以參考下2020-02-02Python實(shí)現(xiàn)簡(jiǎn)單的ui界面的設(shè)計(jì)步驟(適合小白)
當(dāng)我們書寫一個(gè)python程序時(shí),我們?cè)诳刂婆_(tái)輸入信息時(shí),往往多有不便,并且為了更加美觀且直觀的方式輸入控制命令,我們常常設(shè)計(jì)一個(gè)ui界面,這樣就能方便執(zhí)行相關(guān)功能,如計(jì)算器、日歷等界面,本博客是為了給ui設(shè)計(jì)的小白進(jìn)行講解,需要的朋友可以參考下2024-07-07如何基于opencv實(shí)現(xiàn)簡(jiǎn)單的數(shù)字識(shí)別
現(xiàn)在很多場(chǎng)景需要使用的數(shù)字識(shí)別,比如銀行卡識(shí)別,以及車牌識(shí)別等,在AI領(lǐng)域有很多圖像識(shí)別算法,大多是居于opencv 或者谷歌開源的tesseract 識(shí)別,下面這篇文章主要給大家介紹了關(guān)于如何基于opencv實(shí)現(xiàn)簡(jiǎn)單的數(shù)字識(shí)別,需要的朋友可以參考下2021-09-09