如何使用np.isnan从Python中的数组中删除带有nan的行?

时间:2018-07-22 13:42:15

标签: python python-3.x numpy

这是我的代码:

with open(r'filename.dat') as f:
for line in itertools.islice(f, 19, None):
    line = line.strip()
    columns = line.split()
    lam = columns[0]
    lam1 = np.array(lam)
    flux = float(columns[1])
    flux1 = np.array(flux)
    data = np.column_stack((lam1,flux1))
    data = data[~np.isnan(data).any(axis=1)]
    print(data)

我收到此错误:

TypeError:输入类型不支持ufunc'isnan',并且根据强制转换规则“ safe”,不能将输入安全地强制转换为任何受支持的类型

1 个答案:

答案 0 :(得分:0)

您可以使用numpy函数genfromtxt更轻松地导入数据,然后使用简单的切片符号操作删除NaN:

data = np.genfromtxt('filename.dat')
data = data[~np.isnan(data)]

这样,当您导入数据时,它已经是ndarray,并且numpy操作将更易于应用。然后,使用切片符号来选择不是~ NaN np.isnan()的行。