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 :
BitFlagNameMapBitFlagNameMap 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]])