91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

NumPy中掩碼數組怎么創建

發布時間:2023-03-27 11:19:45 來源:億速云 閱讀:105 作者:iii 欄目:開發技術

本篇內容主要講解“NumPy中掩碼數組怎么創建”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“NumPy中掩碼數組怎么創建”吧!

1. 介紹

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

2. 創建掩碼數組

import numpy as np
import numpy.ma as ma

2.1 由列表生成掩碼數組

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

import numpy as np
import numpy.ma as ma

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

2.2 由數組生成掩碼數組

ma.asarray()函數可以將普通的NumPy數組轉成掩碼數組。新生成的掩碼數組不會對原數組中的np.nan或np.inf做掩碼處理,但是會相應調整填充值(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]) # 包含特殊值的數組
print(ma.asarray(a))

2.3 對數組中的無效值做掩碼處理

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

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 對數組中的給定值做掩碼處理

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

import numpy as np
import numpy.ma as ma

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

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

有時需要將數組中符合條件的某些特定值設置為無效(掩碼),掩碼數組子模塊提供了若干函數實現條件掩碼。這些可能的篩選條件包括大于、大于等于、小于、小于等于、區間內、區間外等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 用一個數組的條件篩選結果對另一個數組做掩碼處理

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

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的條件掩碼數組b

3. 訪問掩碼數組

3.1 索引和切片

因為掩碼數組MaskedArray類是numpy.ndarray的派生類,所以那些用在普通NumPy數組上的索引和切片操作也依然有效

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 函數應用

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

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)) # 雖然可以執行,但會彈出警告
print(ma.sin(a)) # 這才是正確的用法

3.3 掩碼數組轉為普通數組

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

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__()) # 復制數據視圖

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

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

3.4 修改掩碼

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

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)

如果要對數組切片掩碼或對數組的某個元素掩碼,直接令該切片或該元素等于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)

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

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)

到此,相信大家對“NumPy中掩碼數組怎么創建”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高碑店市| 梁平县| 蕲春县| 蒙阴县| 登封市| 山东省| 上高县| 孟连| 阳新县| 慈溪市| 承德市| 肃北| 平舆县| 东丰县| 湘阴县| 新营市| 万安县| 平果县| 满城县| 抚州市| 常宁市| 江北区| 荣昌县| 重庆市| 读书| 乌鲁木齐县| 林周县| 福海县| 潼关县| 南充市| 湛江市| 高唐县| 五峰| 黑水县| 宁津县| 临汾市| 同心县| 桃江县| 新源县| 无锡市| 太白县|