Numpy Tips 2 : データ欠損のある配列に対して代数演算などを行いたい

データ欠損のある配列に対して代数演算などを行いたい場合 numpy.ma.MaskedArray を用いたフィルタリングが便利だ. 具体的にはarrayにnanとinfが入ったものを加法演算する場合を考える.


import numpy as np
from numpy import ma

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

mask=np.isinf(a) + np.isnan(a)

masked_a=ma.masked_array(a , mask=mask)
print masked_a 
# > [-- -- 1.0 2.0 3.0]

print masked_a.sum()
#>6


c++const修飾子の代替物@numpy mcbiophys.hatenablog.com