Python 3.x Astropy:删除包含nan的行

Python 3.x Astropy:删除包含nan的行,python-3.x,astropy,Python 3.x,Astropy,我正在使用astropy操作FITS表,我想删除包含nan的所有行 使用存储在mytable中的fits表,我尝试了以下方法 data = np.lib.recfunctions.structured_to_unstructured(np.array(mytable)) idx = [] for i, line in enumerate(data): for e in line: if e !=e: idx.append(i) data = Tab

我正在使用astropy操作FITS表,我想删除包含
nan
的所有行

使用存储在
mytable
中的fits表,我尝试了以下方法

data = np.lib.recfunctions.structured_to_unstructured(np.array(mytable))
idx = []
for i, line in enumerate(data):
    for e in line:
        if e !=e:
            idx.append(i)
data = Table([data[i] for i in range(len(data)) if i not in idx])
这似乎有效,但相当笨重。有没有更像蟒蛇的方法



如果该行中的一个元素是
nan
,我想删除整行。是不同的,因为它是关于删除单个元素的

一种更具num python风格的方法是:

data = np.lib.recfunctions.structured_to_unstructured(np.array(mytable))
has_nan = np.any(np.isnan(data), axis=1)
mytable_no_nan = mytable[~has_nan]
对于一种更为通用的astro-python方式(假设
mytable
是astropy
Table
):

has_nan = np.zeros(len(mytable), dtype=bool)
for col in mytable.itercols():
    if col.info.dtype.kind == 'f':
        has_nan |= np.isnan(col)
mytable_no_nan = mytable[~has_nan]