摆脱列表中的空元素
Getting rid of empty elements in a list
我正在使用 astropy,我正在打印 Data
并得到以下结果作为我的输出:
[<MaskedColumn name='phot_bp_rp_excess_factor' dtype='float32' description='BP/RP excess factor' length=1>
4.678),
(<MaskedColumn name='phot_bp_rp_excess_factor' dtype='float32' description='BP/RP excess factor' length=0>],
(<MaskedColumn name='phot_bp_rp_excess_factor' dtype='float32' description='BP/RP excess factor' length=1>
9.876)]
所以现在我想把“BP/RP excess factor”放在一个新列表 x
中,所以我尝试了:
x=[]
for i in data:
if bp > 0:
x.append(bp[-1]) # "[-1]" to get rid of text and just print out the numbers
#I am expecting [4.678,9.876]
但这给了我一个错误 index -1 is out of bounds for axis 0 with size 0
。我知道这个问题存在是因为在我上面的输出中我有 length=0
,但我不知道写一个忽略 if "length=0"
的代码并给我一个包含 "length=1"
的元素的数字列表.
我对 astropy 不熟悉,但在我的本地测试中似乎可以根据 data
的长度进行过滤:
from astropy.table import MaskedColumn
In [16]: columns = [
...: MaskedColumn(data=[1]),
...: MaskedColumn(data=[]),
...: MaskedColumn(data=[2,3])
...: ]
In [17]: not_empty = [col for col in columns if len(col.data) > 0]
In [18]: not_empty
Out[18]:
[<MaskedColumn dtype='int64' length=1>
1,
<MaskedColumn dtype='int64' length=2>
2
3]
In [19]: len(not_empty)
Out[19]: 2
编辑:
column.size
也可以,感谢评论中的@python_user:
not_empty = [col for col in columns if col.size > 0]
我正在使用 astropy,我正在打印 Data
并得到以下结果作为我的输出:
[<MaskedColumn name='phot_bp_rp_excess_factor' dtype='float32' description='BP/RP excess factor' length=1>
4.678),
(<MaskedColumn name='phot_bp_rp_excess_factor' dtype='float32' description='BP/RP excess factor' length=0>],
(<MaskedColumn name='phot_bp_rp_excess_factor' dtype='float32' description='BP/RP excess factor' length=1>
9.876)]
所以现在我想把“BP/RP excess factor”放在一个新列表 x
中,所以我尝试了:
x=[]
for i in data:
if bp > 0:
x.append(bp[-1]) # "[-1]" to get rid of text and just print out the numbers
#I am expecting [4.678,9.876]
但这给了我一个错误 index -1 is out of bounds for axis 0 with size 0
。我知道这个问题存在是因为在我上面的输出中我有 length=0
,但我不知道写一个忽略 if "length=0"
的代码并给我一个包含 "length=1"
的元素的数字列表.
我对 astropy 不熟悉,但在我的本地测试中似乎可以根据 data
的长度进行过滤:
from astropy.table import MaskedColumn
In [16]: columns = [
...: MaskedColumn(data=[1]),
...: MaskedColumn(data=[]),
...: MaskedColumn(data=[2,3])
...: ]
In [17]: not_empty = [col for col in columns if len(col.data) > 0]
In [18]: not_empty
Out[18]:
[<MaskedColumn dtype='int64' length=1>
1,
<MaskedColumn dtype='int64' length=2>
2
3]
In [19]: len(not_empty)
Out[19]: 2
编辑:
column.size
也可以,感谢评论中的@python_user:
not_empty = [col for col in columns if col.size > 0]