从文本文件中将数据读入 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 数组的主要内容,如果未能解决你的问题,请参考以下文章

将文本文件读入结构化 2D numpy 数组

Python Numpy数组的读入存储操作

Numpy—— 保存和导入文件

在 C++ 中将某种结构化的文本文件读入数组

Python:在文本文件中将数据从垂直旋转到水平

无法将制表符分隔的文件读入 numpy 二维数组