numpy中的掩碼數(shù)組的使用
numpy中有一個掩碼數(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個元素,形成了一個新的掩碼數(shù)組,在該掩碼數(shù)組中,被掩藏的前3位用短橫杠表示,對原始數(shù)組和對應(yīng)的掩碼數(shù)組同時求最小值,可以看到,掩碼數(shù)組中只有未被掩藏的元素參與了計算。
掩碼數(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é)果如下
通過掩碼矩陣,可以輕松實現(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ù)組,可以方便的處理缺失值或者被污染的值,只需要將對應(yīng)的元素掩碼即可,更多的用法請查閱官方的API文檔。
到此這篇關(guān)于numpy中的掩碼數(shù)組的使用的文章就介紹到這了,更多相關(guān)numpy 掩碼數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python操作MongoDb數(shù)據(jù)庫流程詳解
這篇文章主要介紹了Python操作MongoDb數(shù)據(jù)庫流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03通過實例解析python創(chuàng)建進(jìn)程常用方法
這篇文章主要介紹了通過實例解析python創(chuàng)建進(jìn)程常用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06python詞云庫wordCloud使用方法詳解(解決中文亂碼)
這篇文章主要介紹了python詞云庫wordCloud使用方法詳解(解決中文亂碼),需要的朋友可以參考下2020-02-02Python實現(xiàn)簡單的ui界面的設(shè)計步驟(適合小白)
當(dāng)我們書寫一個python程序時,我們在控制臺輸入信息時,往往多有不便,并且為了更加美觀且直觀的方式輸入控制命令,我們常常設(shè)計一個ui界面,這樣就能方便執(zhí)行相關(guān)功能,如計算器、日歷等界面,本博客是為了給ui設(shè)計的小白進(jìn)行講解,需要的朋友可以參考下2024-07-07如何基于opencv實現(xiàn)簡單的數(shù)字識別
現(xiàn)在很多場景需要使用的數(shù)字識別,比如銀行卡識別,以及車牌識別等,在AI領(lǐng)域有很多圖像識別算法,大多是居于opencv 或者谷歌開源的tesseract 識別,下面這篇文章主要給大家介紹了關(guān)于如何基于opencv實現(xiàn)簡單的數(shù)字識別,需要的朋友可以參考下2021-09-09