使用np.loadtxt Python将.xsf(或.dat)文件转换为数组

2024-06-10 04:00:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在查看一些指南和一些张贴在这里的问题,但到目前为止,没有任何东西对我有效。我有一个.xsf文件,其中包含前57行作为一般说明,然后是大约3*10^6个数字。我想将这些数字加载到np.array中,并计算出命令

data = np.loadtxt('filename.xsf', skiprows = 57)

我会成功的

这实际上不起作用,因为第58行和531509行之间的数据组织如下

0.362077E+02  0.960500E+00  0.600950E+00  0.901461E-01  0.478295E-02  0.710280E-01

而最后一行只包含一个元素。我得到的错误是

ValueError: Wrong number of columns at line 531510

然后我想指定一个分隔符(双空格)

data = np.loadtxt('filename.xsf', delimiter ='  ' ,skiprows = 57)

这导致无法读取文件

根据我的理解,我第一次尝试的结果不是一个浮点数组,而是一个数组,其中每个元素都是一个浮点列表(从每一行作为一个整体获取)。在文件的最后一行添加一个数字,它与数组其余部分的格式不匹配。在第二种情况下,我正在努力定义分隔符

我知道这是一个经常被问到和回答的问题,但我尝试过的方法没有一个奏效。因此,我试图为我的问题提供尽可能多的争论。感谢所有愿意贡献的人


Tags: 文件命令元素datanp指南数字数组
1条回答
网友
1楼 · 发布于 2024-06-10 04:00:19

这花了我一些时间,但我似乎已经能够找到我的问题的答案。。。为了得到可能的更正,我正在发布

1-我已将文件转换为csv(可能不需要)

2-


import itertools

data = []
with open('filename.csv') as f:
    for line in f:
        data.append(line.strip().split(','))
#this returns a list of lists each of which is a line from the file

data= list(itertools.chain.from_iterable(data))
#merges the list of list into a single list

相关问题 更多 >