Python readin.txt并将其放入带有numpy的数组中
我想用numpy创建一个数组。 基本文件是一个.txt文件,其格式如下: 我用loadtxt试过:Python readin.txt并将其放入带有numpy的数组中,python,arrays,numpy,Python,Arrays,Numpy,我想用numpy创建一个数组。 基本文件是一个.txt文件,其格式如下: 我用loadtxt试过: data = np.loadtxt("myfile.txt",delimiter='\n',skiprows = 1) 应跳过带有“Zeit”和“Signal”的第一行。我只需要以下形式的数组: [0,1],[0.01,2],[0.02,3]] “Zeit”和“Signal”的值用标签分开 我得到了这个错误: ValueError: could not convert string to fl
data = np.loadtxt("myfile.txt",delimiter='\n',skiprows = 1)
应跳过带有“Zeit”和“Signal”的第一行。我只需要以下形式的数组:
[0,1],[0.01,2],[0.02,3]]
“Zeit”和“Signal”的值用标签分开
我得到了这个错误:
ValueError: could not convert string to float:
看起来您不应该传递
delimiter='\n'
参数。正如我所看到的,这个参数似乎指定了一行上的值的分隔符,而不是一行的分隔符……并且在没有这个参数的情况下调用同一个函数对我很有效。您能运行以下命令并报告它返回的内容吗?Specifically、 包里有什么
bag = []
i = 0
def probe(bit):
global i
i += 1
try:
return float(bit)
except:
bag.append((i, bit))
return np.nan
data = np.loadtxt('myfile.txt', skiprows=1, converters={0:probe, 1:probe})
好的,试试:
import itertools
data = np.loadtxt(itertools.filterfalse(lambda x: len(x.split())!=2, open('myfile.txt')), skiprows=1)
这应该能解决你的问题
data = np.genfromtxt("myfile.txt",skip_header = 1,dtype=None,)
data = [list(i) for i in data]
我错误地试图将您的文件重新创建为
Zeit\tSignal
0.01\t1.1
0.02\t1.105
0.03\t1.108
0.04\t1.2
0.05\t1.205
0.06\t1.209
装载有:
data=np.loadtxt('test.txt', skiprows=1)
得到:
ValueError: could not convert string to float: b'0.01\\t1.1'
将字符串\t
更改为实际制表符(使用copy-n-paste很难传达这一点):
确保您的文件只包含这些字符(列之间有空格或实制表符)。它应该是纯ASCII,而不是RTF或其他格式化测试
也许值得尝试一个字符串数据类型,看看是否有几个有趣的错误,例如
In [478]: data=np.loadtxt('test.txt', dtype=str)
In [479]: data
Out[479]:
array([["b'Zeit'", "b'Signal'"],
["b'0.01'", "b'1.1'"],
["b'0.02'", "b'1.105'"],
["b'0.03'", "b'1.108'"],
["b'0.04'", "b'1.2'"],
["b'0.05'", "b'1.205'"],
["b'0.06'", "b'1.209'"]],
dtype='<U9')
[478]中的:data=np.loadtxt('test.txt',dtype=str)
在[479]中:数据
出[479]:
数组([[“b'Zeit'”,“b'Signal'”),
[“b'0.01'”,“b'1.1'”,
[“b'0.02'”,“b'1.105'”,
[“b'0.03'”,“b'1.108'”,
[“b'0.04'”和“b'1.2'”,
[“b'0.05'”,“b'1.205'”,
[“b'0.06'”和“b'1.209'”],
dtype='本例中的分隔符是空白,而不是换行符。请删除分隔符的参数,因为默认值是任何空白。delimiter
用于分隔列,但您可以向其传递一个换行符。尝试删除该分隔符,默认行为应适用于您的情况。对于制表符分隔符,请使用delimiter='\t'
@hpaulj,我几乎可以100%默认值(“任何空白”)在tabsI上有效。我尝试在没有分隔符的情况下使用它,但传入了相同的错误:返回浮点(位):^Syntaxer错误:无效syntax@Nekoso对不起,请尝试删除冒号。好的,我再次尝试了:ValueError:第行的列数错误7@Nekoso好吧,那么。继续看第7行。除此之外,你还应该告诉我们现在包的样子(在运行'np.loadtxt'之后)我的.txt文件只有6行,如果我再添加一行,它会在第8行返回错误的列数。我在包中找不到任何项目
In [478]: data=np.loadtxt('test.txt', dtype=str)
In [479]: data
Out[479]:
array([["b'Zeit'", "b'Signal'"],
["b'0.01'", "b'1.1'"],
["b'0.02'", "b'1.105'"],
["b'0.03'", "b'1.108'"],
["b'0.04'", "b'1.2'"],
["b'0.05'", "b'1.205'"],
["b'0.06'", "b'1.209'"]],
dtype='<U9')