bitfield_to_boolean_mask#
- astropy.nddata.bitfield_to_boolean_mask(bitfield, ignore_flags=None, flip_bits=None, good_mask_value=False, dtype=numpy.bool_)[源代码]#
根据从提供的位标志构造的位掩码,将位字段数组转换为布尔(或整数)掩码数组(请参阅
ignore_flags
参数)。此函数在将数据质量数组转换为布尔掩码时特别有用,并对DQ标志进行选择性过滤。
- 参数:
- bitfield :
ndarray
恩达雷 位标志数组。默认情况下,与零不同的值被解释为“坏”值,等于零的值被视为“好”值。但是,请参见
ignore_flags
参数指定如何有选择地忽略bitfield
数组数据。- ignore_flags :
int
,str
,list
,None
(默认值=0)PYTHON:INT,PYTHON:STR,PYTHON:LIST,PYTHON:NONE(默认值=0) 一个整数位掩码,
None
或者一个Python标志,或者一个逗号,一个列表'|'
-分开了,'+'
-整数位标志或助记标志名称的分隔字符串列表,指示输入中的位bitfield
应该是 忽略 (即归零),或None
.备注
什么时候?
bit_flags
是一个标志名的列表flag_name_map
必须提供参数。什么时候?ignore_flags
参数是一个整数位掩码,它将与输入的每个元素使用位“非”和“按位”组合bitfield
数组 (~ignore_flags & bitfield
). 如果结果位字段元素为非零,则在输出布尔掩码中,该元素将被解释为“坏”,否则将被解释为“好”。flip_bits
参数可用于翻转位 (bitwise-NOT
)从而有效地改变了ignore_flags
参数从“ignore”到“use only”这些标志。备注
设置
ignore_flags
有效到0将假定输入中的所有非零元素bitfield
数组被解释为“坏”。什么时候?ignore_flags
参数是一个由整型位标志组成的Python列表,这些标志被加在一起以创建一个整型位掩码。列表中的每一项都必须是一个标志,即2的整数次幂的整数。为了翻转产生的位掩码的位,使用flip_bits
参数。或者,ignore_flags
可能是一个逗号字符串-或'+'
(或)'|'
)-整数位标志的分隔列表,应将这些标志(按位或)相加以创建整数位掩码。例如,两者'4,8'
,'4|8'
和'4+8'
是等价的,并指示输入中的位标志4和8bitfield
生成布尔掩码时应忽略数组。备注
'None'
,'INDEF'
,和空字符串(或全部空白)是字符串的特殊值ignore_flags
被解释为None
.备注
列表中的每一项都必须是标志,即是2的整数次方的整数。此外,为方便起见,任意 single 允许使用整数,它将被解释为整数位掩码。例如,不是
'4,8'
用户可以简单地提供字符串'12'
。备注
一次只支持一个标志分隔符。
ignore_flags
绳子不能混在一起','
,'+'
和'|'
分离器。备注
什么时候?
ignore_flags
是一个str
当它前面加上“~”时ignore_flags
参数将被反转:现在它将被解释为 used (或) 不容忽视 )在决定输入的哪些元素时bitfield
数组是“坏的”。按照这个惯例ignore_flags
字符串值'~0'
相当于设置ignore_flags=None
.- flip_bits : bool ,
None
(默认=None
)布尔,派生:无(默认=派生:无) 指定是否反转直接通过提供的位掩码的位
ignore_flags
参数或根据传递的位标志生成ignore_flags
(仅当位标志作为整数位标志的Python列表传递时)。偶尔,它可能有用 只考虑特定的位标志 在bitfield
与创建布尔数组相反 忽略 特定位标志为ignore_flags
默认情况下。这可以通过反转/翻转创建的位掩码的位来实现ignore_flags
有效地改变ignore_flags
参数从“ignore”到“use only”这些标志。设置flip_bits
到None
表示不会执行位翻转。位标志的字符串列表的位翻转必须通过在字符串位标志列表前面加“~”来指定(请参阅文档中的ignore_flags
了解更多详细信息)。- good_mask_value :
int
, bool (默认=False
)PYTHON:INT,BOOL(默认值=PYTHON:FALSE) 此参数用于派生将分配给输出布尔掩码数组中的元素的值,这些元素对应于“good”位字段(在
ignore_flags
)在输入中bitfield
数组。什么时候?good_mask_value
非零或numpy.True_
然后输出布尔掩码数组中与中的“good”位字段相对应的值bitfield
将numpy.True_
(如果dtype
是numpy.bool_
)或1(如果dtype
是数值类型),对应于“坏”标志的值将是numpy.False_
(或0)。什么时候?good_mask_value
是零还是numpy.False_
然后输出布尔掩码数组中与“good”位字段相对应的值bitfield
将numpy.False_
(如果dtype
是numpy.bool_
)或0(如果dtype
是数值类型),对应于“坏”标志的值将是numpy.True_
(或1)。- 数据类型 :数据类型(默认值=
numpy.bool_
)数据类型(默认值= 输出二进制掩码数组所需的数据类型。
- flag_name_map :
BitFlagNameMap
BitFlagNameMap
A
BitFlagNameMap
对象,该对象提供从助记符位标志名到整型位值的映射,以便在bit_flags
以逗号或“+”分隔的菜单位标志名列表。
- bitfield :
- 返回:
- mask :
ndarray
恩达雷 返回与输入具有相同维数的数组
bitfield
数组的元素可以有两个可能的值,例如。,numpy.True_
或numpy.False_
(整数为1或0dtype
)根据输入的值bitfield
元素,ignore_flags
参数,以及good_mask_value
参数。
- mask :
实例
>>> from astropy.nddata import bitmask >>> import numpy as np >>> dqarr = np.asarray([[0, 0, 1, 2, 0, 8, 12, 0], ... [10, 4, 0, 0, 0, 16, 6, 0]]) >>> flag_map = bitmask.extend_bit_flag_map( ... 'ST_DQ', CR=2, CLOUDY=4, RAINY=8, HOT=16, DEAD=32 ... ) >>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=0, ... dtype=int) array([[0, 0, 1, 1, 0, 1, 1, 0], [1, 1, 0, 0, 0, 1, 1, 0]]) >>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=0, ... dtype=bool) array([[False, False, True, True, False, True, True, False], [ True, True, False, False, False, True, True, False]]...) >>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=6, ... good_mask_value=0, dtype=int) array([[0, 0, 1, 0, 0, 1, 1, 0], [1, 0, 0, 0, 0, 1, 0, 0]]) >>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=~6, ... good_mask_value=0, dtype=int) array([[0, 0, 0, 1, 0, 0, 1, 0], [1, 1, 0, 0, 0, 0, 1, 0]]) >>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=6, dtype=int, ... flip_bits=True, good_mask_value=0) array([[0, 0, 0, 1, 0, 0, 1, 0], [1, 1, 0, 0, 0, 0, 1, 0]]) >>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags='~(2+4)', ... good_mask_value=0, dtype=int) array([[0, 0, 0, 1, 0, 0, 1, 0], [1, 1, 0, 0, 0, 0, 1, 0]]) >>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags=[2, 4], ... flip_bits=True, good_mask_value=0, ... dtype=int) array([[0, 0, 0, 1, 0, 0, 1, 0], [1, 1, 0, 0, 0, 0, 1, 0]]) >>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags='~(CR,CLOUDY)', ... good_mask_value=0, dtype=int, ... flag_name_map=flag_map) array([[0, 0, 0, 1, 0, 0, 1, 0], [1, 1, 0, 0, 0, 0, 1, 0]]) >>> bitmask.bitfield_to_boolean_mask(dqarr, ignore_flags='~(CR+CLOUDY)', ... good_mask_value=0, dtype=int, ... flag_name_map=flag_map) array([[0, 0, 0, 1, 0, 0, 1, 0], [1, 1, 0, 0, 0, 0, 1, 0]])