np.loadtxt(和genfromtxt)接受任何iterable作为输入,只要它一次输入一行.因此,文件的行可以通过以各种方式对其进行按摩的函数或生成器传递.这是一个简单的例子
定义一对模拟文件的行:
In [7]: txt="""10:34:24.58 8.284 6.121
...: 10 34 24.58 8.284 6.121
...: """
In [8]: txt=txt.splitlines()
In [9]: txt
Out[9]: ['10:34:24.58 8.284 6.121', '10 34 24.58 8.284 6.121']
如果它不是:我可以直接将它传递给loadtxt.
但是让我们通过生成器传递线条,用空格替换’:’.它可能是一个函数(有收益率).在这里,我正在使用其中一个新的生成器理解表达式:
In [10]: np.loadtxt((x.replace(b':',b' ') for x in txt))
Out[10]:
array([[ 10. , 34. , 24.58 , 8.284, 6.121],
[ 10. , 34. , 24.58 , 8.284, 6.121]])
使用文件,这应该工作(迭代打开文件返回行):
with open(filename) as f:
A=np.loadtxt((x.replace(b':',b' ') for x in f))
正则表达式可用于更精细的替换.
版权声明:本文为weixin_39627144原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。