Numpy MaskedArray.masked_where()函数| Python
在许多情况下,数据集可能不完整或因存在无效数据而受到污染。例如,传感器可能无法记录数据,或记录无效值。 numpy.ma
模块通过引入掩码数组提供了解决此问题的便捷方法。掩码数组是可能缺少或无效条目的数组。
numpy.MaskedArray.masked_where()
函数用于屏蔽满足条件的数组。它返回 arr 作为屏蔽条件为 True 的数组。 arr 或 condition 的任何屏蔽值也会在输出中屏蔽。
Syntax : numpy.ma.masked_where(condition, arr, copy=True)
Parameters:
condition : [array_like] Masking condition. When condition tests floating point values for equality, consider using masked_values instead.
arr : [ndarray] Input array which we want to mask.
copy : [bool] If True (default) make a copy of arr in the result. If False modify arr in place and return a view.
Return : [ MaskedArray] The result of masking arr where condition is True..
代码#1:
# Python program explaining
# numpy.MaskedArray.masked_where() method
# importing numpy as geek
# and numpy.ma module as ma
import numpy as geek
import numpy.ma as ma
# creating input array
in_arr = geek.array([1, 2, 3, -1, 2])
print ("Input array : ", in_arr)
# applying MaskedArray.masked_where methods
# to input array where value<= 1
mask_arr = ma.masked_where(in_arr<= 1, in_arr)
print ("Masked array : ", mask_arr)
Input array : [ 1 2 3 -1 2]
Masked array : [-- 2 3 -- 2]
代码#2:
# Python program explaining
# numpy.MaskedArray.masked_where() method
# importing numpy as geek
# and numpy.ma module as ma
import numpy as geek
import numpy.ma as ma
# creating input array in_arr1
in_arr1 = geek.arange(4)
print ("1st Input array : ", in_arr1)
# applying MaskedArray.masked_where methods
# to input array in_arr1 where value = 1
mask_arr1 = ma.masked_where(in_arr1 == 1, in_arr1)
print ("1st Masked array : ", mask_arr1)
# creating input array in_arr2
in_arr2 = geek.arange(4)
print ("2nd Input array : ", in_arr2)
# applying MaskedArray.masked_where methods
# to input array in_arr2 where value = 1
mask_arr2 = ma.masked_where(in_arr2 == 3, in_arr2)
print ("2nd Masked array : ", mask_arr2)
# applying MaskedArray.masked_where methods
# to 1st masked array where second masked array
# is used as condition
res_arr = ma.masked_where(mask_arr1 == 3, mask_arr2)
print("Resultant Masked array : ", res_arr)
1st Input array : [0 1 2 3]
1st Masked array : [0 -- 2 3]
2nd Input array : [0 1 2 3]
2nd Masked array : [0 1 2 --]
Resultant Masked array : [0 -- 2 --]