【问题标题】:How to remove the nans from my python code如何从我的 python 代码中删除 nans
【发布时间】:2013-08-24 00:21:17
【问题描述】:

我编写了一个脚本,其中从文件的列创建列表。在此列表中,随机放置了许多 nan 条目。我怎样才能删除这些条目? 这是我的代码:

#import astropy.io.ascii as asciitable
import numpy as np
import pylab as plt

#x=asciitable.read('protected.txt', guess=False,delimiter='\t',fill_values=[('', '-999')])
#x=np.genfromtxt('protected.txt', comments='#', delimiter='   ', skiprows=0, skip_header=0, skip_footer=0, converters=None, missing='', missing_values='', filling_values=-999, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True)
x=np.load('EC/EC_data')
# Convert columns to float values
BMI=map(float,x['bmiEC'])
print BMI

这是回溯:

TypeError                                 Traceback (most recent call last)

/example_bmiEC.py in <module>()
      8 # Convert columns to float values

      9 BMI=map(float,x['bmiEC'])
---> 10 BMI=BMI[~np.isnan(BMI)]
     11 print BMI



TypeError: only integer arrays with one element can be converted to an index
WARNING: Failure executing file: <example_bmiECFSPR.py>

【问题讨论】:

  • 您能清楚地解释一下nan entry 是什么吗? / 为什么你的一半代码被注释掉了?你到底在问什么?你试过什么?
  • 您要从结果列表中删除 NaN,还是要对其进行修复以使它们一开始就不会出现在该列表中?
  • nan 的意思是“不是数字”。一些编码被注释掉了,因为运行代码的计算机不需要它,但在其他计算机上它是
  • @Juhana 删除或修复,这样它们就不会出现了

标签: python list nan


【解决方案1】:
>>> import numpy as np
>>> a = np.array([1, 2, 3., np.nan, 4, np.nan])
>>> a = a[~np.isnan(a)]
>>> a
array([ 1.,  2.,  3.,  4.])

【讨论】:

  • ~ 运算符类似,您可以使用a[np.logical_not(np.isnan(a))]
  • @SaulloCastro 这些都不适合我,我收到一条错误消息,说“只有一个元素的整数数组可以转换为索引”
  • @blablabla 我担心错误在其他地方......您能否用您的错误的后退来更新问题?
  • @blablabla:您需要将 BMI 转换为 NumPy 数组:BMI = np.array(BMI)
  • @blablabla... 在 Python 2.x 中,map 的输出是 list 对象,所以 @NPE 是对的,你必须将其转换为 numpy.ndarray
【解决方案2】:

How to check for NaN in python?

看到这个答案,

基本使用函数math.isnan()

>>> import math
>>> x=float('nan')
>>> math.isnan(x)
True
>>>

【讨论】:

    猜你喜欢
    • 2021-07-28
    • 2017-06-28
    • 2021-03-19
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    相关资源
    最近更新 更多