从缺少值的文本文件中读取数据

ACE*_*CEG 11 python numpy python-2.7

我想从具有许多缺失值的文件中读取数据,如下例所示:

1,2,3,4,5
6,,,7,8
,,9,10,11
Run Code Online (Sandbox Code Playgroud)

我正在使用numpy.loadtxt函数:

data = numpy.loadtxt('test.data', delimiter=',')
Run Code Online (Sandbox Code Playgroud)

问题是缺少值会破坏loadtxt(我得到一个"ValueError:无法将字符串转换为float:",毫无疑问是因为有两个或多个连续的分隔符).

有没有办法自动执行此操作,使用loadtxt或其他功能,或者我必须咬住子弹并手动解析每一行?

DSM*_*DSM 14

我可能会使用genfromtxt:

>>> from numpy import genfromtxt
>>> genfromtxt("missing1.dat", delimiter=",")
array([[  1.,   2.,   3.,   4.,   5.],
       [  6.,  nan,  nan,   7.,   8.],
       [ nan,  nan,   9.,  10.,  11.]])
Run Code Online (Sandbox Code Playgroud)

然后用nans做任何事情(将它们更改为某些东西,改为使用掩码等).其中一些可以内联完成:

>>> genfromtxt("missing1.dat", delimiter=",", filling_values=99)
array([[  1.,   2.,   3.,   4.,   5.],
       [  6.,  99.,  99.,   7.,   8.],
       [ 99.,  99.,   9.,  10.,  11.]])
Run Code Online (Sandbox Code Playgroud)