日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Numpy掩码数组masked arrays,这一篇就够了

發布時間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Numpy掩码数组masked arrays,这一篇就够了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Numpy掩碼數組masked arrays,這一篇就夠了

    • 1. 什么是掩碼數組
    • 2.示例
      • 2.1 一個例子走進掩碼數組
      • 2.2 創建一個數組第二個值是無效的
      • 2.3 創建一個數組所有靠近1.e20的值是無效的
      • 2.4 只獲取有效項
      • 2.5 取消標識無效(注意標識硬編碼的需要先軟化在標識)
      • 2.6 修改Masked Array標記項為無效項
    • 參考

  • MaskedArray是numpy.ndarray的一個子類,因此它繼承了索引和切片機制。

1. 什么是掩碼數組

掩碼數組是包括可能缺少或無效項的數組。numpy.ma模塊為numpy提供了一個幾乎可以替代numpy的替代品,它支持帶掩碼的數據數組。

數組計算時,數據集可能是不完整的或者由于存在無效數據而使得計算結果是被污染的。 例如,傳感器可能無法記錄數據,或記錄了無效值。ma模塊通過引入屏蔽數組,提供了一種解決此問題的方便方法。

掩碼數組是標準numpy.ndarray和掩碼的組合。掩碼可以是nomask,表示關聯數組的值無效,也可以是boolean數組,用于確定關聯數組的每個元素的值是否有效。 當掩碼的某個元素為False時,關聯數組的相應元素有效,并被稱為未掩碼。當掩碼的一個元素為真時,關聯數組的相應元素被稱為掩碼(無效)。
該包確保在計算中不使用屏蔽項。

2.示例

概念有點抽象,看一個例子感受一下:

2.1 一個例子走進掩碼數組

掩碼數組可以幫助進行numpy的相應運算而忽略無效值

# 掩碼數組可以幫助進行numpy的相應運算而忽略無效值
import numpy as np
import numpy.ma as max = np.array([1, 2, 3, -1, 5])# 假設上述數組x中第4個值是無效的,那么可以建立一個掩碼數組如下mx
mx = ma.masked_array(x, mask=[0, 0, 0, 1, 0])# 接下來就可以忽略無效數據,而計算數據集x的平均值了
print(mx.mean())
# 得到結果2.75

ma模塊的主要特性是MaskedArray類,它是numpy.ndarray的一個子類。
numpy.ma模塊可用作numpy的附加模塊;

2.2 創建一個數組第二個值是無效的

import numpy.ma as ma
# 創建一個數組第二個值是無效的
y = ma.array([1, 2, 3], mask = [0, 1, 0])

2.3 創建一個數組所有靠近1.e20的值是無效的

import numpy.ma as ma
# 創建一個數組所有靠近1.e20的值是無效的
z = ma.masked_values([1.0, 1.e20, 3.0, 4.0], 1.e20)

2.4 只獲取有效項

import numpy.ma as ma# 只獲取有效項法一
x = ma.array([[1, 2], [3, 4]], mask=[[0, 1], [1, 0]])
print(x[~x.mask])
# masked_array(data=[1, 4],
#              mask=[False, False],
#              fill_value=999999)# 只獲取有效項法2
print(x.compressed())
# array([1, 4])

2.5 取消標識無效(注意標識硬編碼的需要先軟化在標識)

import numpy.ma as ma# 取消標識項無效
x = ma.array([1, 2, 3], mask=[0, 0, 1])
print(x)
# masked_array(data=[1, 2, --],
#              mask=[False, False, True],
#              fill_value=999999)
x[-1] = 5
print(x)
# masked_array(data=[1, 2, 5],
#              mask=[False, False, False],
#              fill_value=999999)x = ma.array([1, 2, 3], mask=[0, 0, 1], hard_mask=True)
print(x)
# masked_array(data=[1, 2, --],
#              mask=[False, False, True],
#              fill_value=999999)
x[-1] = 5
print(x)
# masked_array(data=[1, 2, --],
#              mask=[False, False, True],
#              fill_value=999999)
print(x.soften_mask())
# masked_array(data=[1, 2, --],
#              mask=[False, False, True],
#              fill_value=999999)
x[-1] = 5
print(x)
# masked_array(data=[1, 2, 5],
#              mask=[False, False, False],
#              fill_value=999999)
print(x.harden_mask())
# masked_array(data=[1, 2, 5],
#              mask=[False, False, False],
#              fill_value=999999)# 硬編碼的需要先軟化才可以標識取消無效
x = ma.array([1, 2, 3], mask=[0, 0, 1])
print(x)
# masked_array(data=[1, 2, --],
#              mask=[False, False,  True],
#              fill_value=999999)
x.mask = ma.nomask
print(x)
# masked_array(data=[1, 2, 3],
#              mask=[False, False, False],
#              fill_value=999999)

2.6 修改Masked Array標記項為無效項

import numpy.ma as ma# 修改Masked Array標記項為無效項
x = ma.array([1, 2, 3])
x[0] = ma.masked
print(x)
# masked_array(data=[--, 2, 3],
#              mask=[ True, False, False],
#              fill_value=999999)
y = ma.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
y[(0, 1, 2), (1, 2, 0)] = ma.masked
print(y)
# masked_array(
#     data=[[1, --, 3],
#           [4, 5, --],
#           [--, 8, 9]],
#     mask=[[False,  True, False],
#           [False, False,  True],
#           [ True, False, False]],
#     fill_value=999999)
z = ma.array([1, 2, 3, 4])
z[:-2] = ma.masked
print(z)
# masked_array(data=[--, --, 3, 4],
#              mask=[ True,  True, False, False],
#              fill_value=999999)

參考

  • https://numpy.org/doc/stable/reference/maskedarray.html

總結

以上是生活随笔為你收集整理的Numpy掩码数组masked arrays,这一篇就够了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。