从文本文件中将数据读入 numpy 数组
Posted
技术标签:
【中文标题】从文本文件中将数据读入 numpy 数组【英文标题】:Reading data into numpy array from text file 【发布时间】:2013-12-10 14:36:48 【问题描述】:我有一个包含一些元数据的文件,然后是一些由 2 列和标题组成的实际数据。在numpy中使用genfromtxt之前是否需要将这两种数据分开?或者我可以以某种方式拆分数据吗?将文件指针放在标题上方的行尾,然后从那里尝试 genfromtxt 怎么样?谢谢 文件格式如下图:
&SRS
<MetaDataAtStart>
multiple=True
Wavelength (Angstrom)=0.97587
mode=assessment
background=True
issid=py11n2g
noisy=True
</MetaDataAtStart>
&END
Two Theta(deg) Counts(sec^-1)
10.0 41.0
10.1 39.0
10.2 38.0
10.3 38.0
10.4 41.0
10.5 42.0
10.6 38.0
10.7 44.0
10.8 42.0
10.9 39.0
11.0 37.0
11.1 37.0
11.2 45.0
11.3 36.0
11.4 37.0
11.5 37.0
11.6 40.0
11.7 44.0
11.8 45.0
11.9 46.0
12.0 44.0
12.1 40.0
12.2 41.0
12.3 39.0
12.4 41.0
【问题讨论】:
所以你根本不需要头部信息? 我也想阅读标题信息。 :) 好,那你基本上单独解析header;请参阅下面的答案。 【参考方案1】:如果您不想要第一行n
,请尝试(如果没有丢失数据):
data = numpy.loadtxt(yourFileName,skiprows=n)
或(如果有缺失数据):
data = numpy.genfromtxt(yourFileName,skiprows=n)
如果你再想解析头部信息,可以返回open
文件解析头部,例如:
fh = open(yourFileName,'r')
for i,line in enumerate(fh):
if i is n: break
do_other_stuff_to_header(line)
fh.close()
【讨论】:
我想我明白了,是否需要使用 csv.dictreader 读取标题? 我上面的内容将遍历这些行,直到您点击行n
然后它会停止。当它遍历它们时,你可以做任何你想做的事情来解析它们。
如何不导入最后n行?
loadtxt 或 genfromtxt 对我不起作用。我收到以下错误:文件“/Users/vivekchowdary/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py”,第 965 行,在 loadtxt NameError: name 'os_PathLike' is not已定义文件“/Users/vivekchowdary/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py”,第 1756 行,在 genfromtxt replace_space=replace_space) NameError: name 'os_PathLike' is not defined
以上是关于从文本文件中将数据读入 numpy 数组的主要内容,如果未能解决你的问题,请参考以下文章