繁体   English   中英

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

[英]How to remove rows with nan from array in Python using np.isnan?

这是我的代码:

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”,不能将输入安全地强制转换为任何受支持的类型

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM