我想将数据从文件myfile
读入数组,该数组在开头包含一个我打算忽略的字符串。这样的事情: -
"myfile", 1.0, 2.0, 3.0
,4.0, 5.0, 6.0
这是代码: -
def func(filename):
with open(filename) as fp
line = next(fp).split(',')
yield ','.join(line[1:])
for line in fin:
yield line
arr = np.genfromtxt(func('myfile'), delimiter=',')
我得到一个例外: -
Line #2 (got 4 columns instead of 3)
我觉得奇怪的是,如果我的数据看起来像这样,
"myfile", 1.0, 2.0, 3.0, 4.0
,5.0, 6.0, 7.0
我得到了
array([[ 1., 2., 3., 4.],
[ nan, 4., 5., 6.]])
有人能解释一下这里发生了什么吗?
答案 0 :(得分:1)
对我来说,在修正拼写错误后,它可以正常工作:
import numpy as np
def func(filename):
with open(filename) as fp:
line = next(fp).split(',')
yield ','.join(line[1:])
for line in fp:
yield line[1:]
print np.genfromtxt(func('myfile'), delimiter=',')
在myfile
:
"myfile", 1.0, 2.0, 3.0
,4.0, 5.0, 6.0
答案 1 :(得分:0)
第二行的前导逗号是导致此行为的原因。 genfromtxt期望那里有另一个值,如果没有,则替换nan。所以第二行根据genfromtxt有4个值。如果同样适用于你的第一行,那就没关系;但genfromtxt需要一个方形的输入块,采用行/列类型格式。你可以做的一件事是用一个额外的前导逗号替换要删除的字符串,将字符串呈现为nans;如果这确实确实使您的数据平方。如果没有,那么最好的方法就是取决于你的数据实际上是什么样的。