欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

NumPy中掩碼數(shù)組的操作

 更新時間:2023年03月27日 10:57:29   作者:飛Link  
本文主要介紹了NumPy中掩碼數(shù)組的操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 介紹

numpy.ma子模塊通過引入掩碼數(shù)組提供了一種解決數(shù)據(jù)缺失或無效問題的安全、便捷的方法。numpy.ma子模塊的主體是MaskedArray類,他是numpy.ndarray的派生類,可以把numpy.ma子模塊當(dāng)做ndarray來用,且無須考慮數(shù)組的無效值是否會給操作帶來無法預(yù)制的意外

2. 創(chuàng)建掩碼數(shù)組

import numpy as np
import numpy.ma as ma

2.1 由列表生成掩碼數(shù)組

掩碼數(shù)組子模塊的ma.array()函數(shù)和Numpy的np.array()函數(shù)類似,可以直接將列表生成掩碼數(shù)組,默認(rèn)mask參數(shù)為False,生成的數(shù)組類型是MaskedArray類。數(shù)組掩碼梳理后,無論是查找最大值、最小值,還是計(jì)算均值、方差,都不用再擔(dān)心數(shù)據(jù)是否無效的問題了

import numpy as np
import numpy.ma as ma

a = ma.array([0, 1, 2, 3], mask=[0, 0, 1, 0]) # 指定第3個元素?zé)o效
print(a)
print(type(a))
print(a.min(), a.max(), a.mean(), a.var())

2.2 由數(shù)組生成掩碼數(shù)組

ma.asarray()函數(shù)可以將普通的NumPy數(shù)組轉(zhuǎn)成掩碼數(shù)組。新生成的掩碼數(shù)組不會對原數(shù)組中的np.nan或np.inf做掩碼處理,但是會相應(yīng)調(diào)整填充值(fill_value)

import numpy as np
import numpy.ma as ma

a = np.arange(5)
print(ma.asarray(a))

a = np.array([1, np.nan, 2, np.inf, 3]) # 包含特殊值的數(shù)組
print(ma.asarray(a))

2.3 對數(shù)組中的無效值做掩碼處理

ma.asarray()函數(shù)不會對原數(shù)組中的np.nan或np.inf做掩碼處理,ma.masked_invalid()函數(shù)則可以實(shí)現(xiàn)這個功能

import numpy as np
import numpy.ma as ma

a = np.array([1, np.nan, 2, np.inf, 3])
print(ma.masked_invalid(a))

2.4 對數(shù)組中的給定值做掩碼處理

有時需要將數(shù)組中的某個給定值設(shè)置為無效(掩碼),ma.masked_equal()函數(shù)可以實(shí)現(xiàn)這個功能

import numpy as np
import numpy.ma as ma

a = np.arange(3).repeat(2)
print(ma.masked_equal(a, 1)) # 對數(shù)組元素1做掩碼

2.5 對數(shù)組中符合條件的特定值做掩碼處理

有時需要將數(shù)組中符合條件的某些特定值設(shè)置為無效(掩碼),掩碼數(shù)組子模塊提供了若干函數(shù)實(shí)現(xiàn)條件掩碼。這些可能的篩選條件包括大于、大于等于、小于、小于等于、區(qū)間內(nèi)、區(qū)間外等6中。

import numpy as np
import numpy.ma as ma

a = np.arange(8)
print(ma.masked_greater(a, 4)) # 掩碼大于4的元素
print(ma.masked_greater_equal(a, 4)) # 掩碼大于等于4的元素
print( ma.masked_less(a, 4)) # 掩碼小于4的元素
print(ma.masked_less_equal(a, 4)) # 掩碼小于等于4的元素
print(ma.masked_inside(a, 2, 5)) # 掩碼 [2,5]之間的元素
print(ma.masked_outside(a, 2, 5)) # 掩碼 [2,5]之外的元素

2.6 用一個數(shù)組的條件篩選結(jié)果對另一個數(shù)組做掩碼處理

a和b是兩個結(jié)構(gòu)相同的數(shù)組,如果用a>5的條件對數(shù)組b掩碼,上面那些函數(shù)就失效了。這種情況可以使用ma.masked_where()函數(shù),該函數(shù)也可以對數(shù)組自身掩碼

import numpy as np
import numpy.ma as ma

a = np.arange(8)
b = np.random.random(8)
print( ma.masked_where(a>5, b)) # 用a>5的條件掩碼數(shù)組b?

3. 訪問掩碼數(shù)組

3.1 索引和切片

因?yàn)檠诖a數(shù)組MaskedArray類是numpy.ndarray的派生類,所以那些用在普通NumPy數(shù)組上的索引和切片操作也依然有效

import numpy as np
import numpy.ma as ma

a = np.array([1, np.nan, 2, np.inf, 3])
a = ma.masked_invalid(a)
print(a[0], a[1], a[-1])
print(a[1:-1])

3.2 函數(shù)應(yīng)用

掩碼數(shù)組內(nèi)置方法的使用和普通數(shù)組沒有區(qū)別。使用NumPy命名空間的函數(shù)則要慎重,如果掩碼數(shù)組子模塊有對應(yīng)函數(shù),應(yīng)優(yōu)先使用數(shù)組子模塊的對應(yīng)函數(shù)。例如,對掩碼數(shù)組求正弦,如果使用np.sin()函數(shù),會發(fā)出警告信息;如果使用ma.sin()函數(shù),則無任何問題

import numpy as np
import numpy.ma as ma

a = np.array([1, np.nan, 2, np.inf, 3])
a = ma.masked_invalid(a)
print(a.min(), a.max(), a.mean(), a.var())
#print(np.sin(a)) # 雖然可以執(zhí)行,但會彈出警告
print(ma.sin(a)) # 這才是正確的用法

3.3 掩碼數(shù)組轉(zhuǎn)為普通數(shù)組

任何情況下,我們都可以通過掩碼數(shù)組的data屬性來獲得掩碼數(shù)組的數(shù)據(jù)視圖,其類型就是np.ndarray數(shù)組。另外,還可以使用掩碼數(shù)組的__array__()函數(shù)或ma.getdata()函數(shù)來獲取掩碼數(shù)組的數(shù)據(jù)視圖。上述三種方法獲得數(shù)據(jù)視圖的操作,本質(zhì)上都是操作掩碼的數(shù)組本身。如果需要數(shù)據(jù)視圖副本,需使用copy()函數(shù)

import numpy as np
import numpy.ma as ma

a = ma.array([1, np.nan, 2, np.inf, 3])
print(a)

x = a.data
y = a.__array__()
z = ma.getdata(a)
w = np.copy(a.__array__()) # 復(fù)制數(shù)據(jù)視圖

print(x)
print(y)
print(z)
print(w)

a[-1] = 9
print(x)
print(y)
print(z)
print(w)

3.4 修改掩碼

通過掩碼數(shù)組的mask屬性可以查看當(dāng)前數(shù)組的掩碼情況,其代碼如下。通常,數(shù)組的掩碼是一個布爾型數(shù)組,或是一個布爾值

import numpy as np
import numpy.ma as ma

a = ma.masked_invalid(np.array([1, np.nan, 2, np.inf, 3]))
print(a.mask)

如果要對數(shù)組切片掩碼或?qū)?shù)組的某個元素掩碼,直接令該切片或該元素等于ma.masked常量即可

import numpy as np
import numpy.ma as ma

a = ma.masked_invalid(np.array([1, np.nan, 2, np.inf, 3]))
print(a.mask)
print(a)

a[:2] = ma.masked
print(a)

如果要撤銷對數(shù)組切片或數(shù)組中的某個元素的掩碼,只需要對該切片或該元素做賦值操作即可

import numpy as np
import numpy.ma as ma

a = ma.masked_invalid(np.array([1, np.nan, 2, np.inf, 3]))
a[1] = 1.5
a[2:4] = 5
print(a)

到此這篇關(guān)于NumPy中掩碼數(shù)組的操作的文章就介紹到這了,更多相關(guān)NumPy 掩碼數(shù)組內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python詞云展示庫wordcloud配置詳解

    Python詞云展示庫wordcloud配置詳解

    這篇文章主要介紹了Python詞云展示庫wordcloud配置詳解,詞云就是將詞語通過圖形可視化的方式,直觀和藝術(shù)的展示出來,詞云在我們的生活中經(jīng)常能夠看到,無論是中文的詞云還是英文的詞云,需要的朋友可以參考下
    2023-07-07
  • 用python寫asp詳細(xì)講解

    用python寫asp詳細(xì)講解

    本文介紹使用python寫asp程序代碼,大家參考使用吧
    2013-12-12
  • Python實(shí)現(xiàn)斐波那契數(shù)列的多種寫法總結(jié)

    Python實(shí)現(xiàn)斐波那契數(shù)列的多種寫法總結(jié)

    這篇文章主要給大家介紹了利用Python實(shí)現(xiàn)斐波那契數(shù)列的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 利用Tensorflow的隊(duì)列多線程讀取數(shù)據(jù)方式

    利用Tensorflow的隊(duì)列多線程讀取數(shù)據(jù)方式

    今天小編就為大家分享一篇利用Tensorflow的隊(duì)列多線程讀取數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python實(shí)現(xiàn)簡易聊天對話框

    python實(shí)現(xiàn)簡易聊天對話框

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡易聊天對話框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python multiply()與dot使用示例講解

    python multiply()與dot使用示例講解

    這篇文章主要介紹了python multiply()與dot使用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-12-12
  • Python圖形化界面基礎(chǔ)篇之如何使用彈出窗口和對話框

    Python圖形化界面基礎(chǔ)篇之如何使用彈出窗口和對話框

    對于Python程序員來說,處理彈出窗口似乎并不是一個常見的任務(wù),這篇文章主要給大家介紹了關(guān)于Python圖形化界面基礎(chǔ)篇之如何使用彈出窗口和對話框的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • Python中字符串相關(guān)操作的運(yùn)算符總結(jié)

    Python中字符串相關(guān)操作的運(yùn)算符總結(jié)

    這篇文章主要介紹了Python之字符串相關(guān)操作的運(yùn)算符,本文通過案例給大家詳細(xì)講解python字符串運(yùn)算符的說明,需要的朋友可以參考下
    2023-12-12
  • Python 定義只讀屬性的實(shí)現(xiàn)方式

    Python 定義只讀屬性的實(shí)現(xiàn)方式

    這篇文章主要介紹了Python 定義只讀屬性的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • 詳細(xì)分析Python垃圾回收機(jī)制

    詳細(xì)分析Python垃圾回收機(jī)制

    這篇文章主要介紹了Python垃圾回收機(jī)制的相關(guān)資料,文中講解非常詳細(xì),示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評論