日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

numpy中的掩碼數(shù)組的使用_python

作者:生信修煉手冊 ? 更新時(shí)間: 2023-05-23 編程語言

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位用短橫杠表示,對原始數(shù)組和對應(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ù)組,可以方便的處理缺失值或者被污染的值,只需要將對應(yīng)的元素掩碼即可,更多的用法請查閱官方的API文檔。

原文鏈接:https://cloud.tencent.com/developer/article/1641455

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新