【发布时间】:2013-06-22 20:07:13
【问题描述】:
尽管前面的问题给出了建议:
-9999 as missing value with numpy.genfromtxt()
Using genfromtxt to import csv data with missing values in numpy
我仍然无法处理以缺失值结尾的文本文件,
a.txt:
1 2 3
4 5 6
7 8
我尝试了missing_values、filling_values 的多种选项排列,但无法正常工作:
import numpy as np
sol = np.genfromtxt("a.txt",
dtype=float,
invalid_raise=False,
missing_values=None,
usemask=True,
filling_values=0.0)
print sol
我想得到的是:
[[1.0 2.0 3.0]
[4.0 5.0 6.0]
[7.0 8.0 0.0]]
但我得到了:
/usr/local/lib/python2.7/dist-packages/numpy/lib/npyio.py:1641: ConversionWarning: Some errors were detected !
Line #3 (got 2 columns instead of 3)
warnings.warn(errmsg, ConversionWarning)
[[1.0 2.0 3.0]
[4.0 5.0 6.0]]
【问题讨论】:
-
是否可以更改分隔符?
-
@Ophion 不,假定文本文件已按原样固定。我当然可以使用带有几个
str.split的普通python 加载文件,但问题是如何对numpy.genfromtxt执行相同操作。 -
您对使用 pandas 的解决方案感兴趣吗? (这很简单)。
-
Numpy 的 IOtools 使用 line.split(delimiter)。除非列是固定数量的字符,否则我不确定是否有解决方法。如前所述,py pandas 真的很棒——一旦我跳了起来,我的生活就变得简单多了。
-
来自文档docs,“当使用空格作为分隔符时,或者当没有给出分隔符作为输入时,两个字段之间不应有任何缺失数据。”你根本无法做你想做的事。
标签: python parsing numpy genfromtxt