【问题标题】:Using numpy genfromtxt to load data with special characters as missing values使用 numpy genfromtxt 加载具有特殊字符的数据作为缺失值
【发布时间】:2014-01-19 11:36:08
【问题描述】:

我正在尝试以“#”作为缺失值加载数据

我正在使用 genfromtxt

genfromtxt("data.txt",missing_values="#",filling_values=0)

但我不断收到以下错误

引发 ValueError(errmsg) ValueError:检测到一些错误! 第 25 行(得到 1 列而不是 5 列)

我已尝试填充上面代码中的缺失值,但保留此错误

【问题讨论】:

    标签: python-2.7 numpy


    【解决方案1】:

    genfromtxt 的默认 comments 参数是 #,因此您需要更改它。另外,将filling_values 设为字符串"0"

    例如,

    In [30]: !cat data_missing.txt 
    1.23e+00 4.56e+01 2.00e+00
    7.89e+01 #.##e+## 3.00e+00
    
    In [31]: a = np.genfromtxt("data_missing.txt",
       ....:                   comments=None,
       ....:                   missing_values="#.##e+##",
       ....:                   filling_values="0")
    
    In [32]: a
    Out[32]: 
    array([[  1.23,  45.6 ,   2.  ],
           [ 78.9 ,   0.  ,   3.  ]])
    

    【讨论】:

      【解决方案2】:

      您需要指定列分隔符(我假设,在您的情况下它是表格):

      genfromtxt(delimiter = "\t")
      

      另外,您的缺失值为missing_values="#.########e+##"

      【讨论】:

      • 它返回一个 150x0 矩阵而不是 150x5 并且数据被 nan 替换,因此分隔符不是 '\t' 而是空格,并且带有空格会出错
      猜你喜欢
      • 2015-10-04
      • 2011-04-15
      • 2018-09-26
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      相关资源
      最近更新 更多