我有一台将三个数据集存储在.DAT文件中的设备,它们始终具有相同的标题和列数,但行数却有所不同。它们是(nx 4),(mx 4),(L x 3)。我需要将三个数据集提取到单独的数组中进行绘图。我一直在尝试使用numpy.genfromtxt和numpy.loadtxt,但是我可以使它们适用于这种格式的唯一方法是手动定义每个数据集开始的行。由于我经常需要处理这种格式,因此我一直在尝试使其自动化。如果有人建议一种可行的方法,我将不胜感激。我已经附上了一个示例文件。
只是一个麻烦而肮脏的解决方案。以您的文件大小,您可能会遇到性能问题。如果你知道m
,n
并且L
,与各自的长度初始化输出向量。
这里是策略:将整个文件加载到变量中。逐行读取变量。一旦发现关键字,请升起一个标记,表明您位于特定的块中。在下一行中,读出正确的变量所在的行。
isblock1 = isblock2 = isblock3 = False
fout = [] # construct also all the other variables that you want to collect.
with open(file, 'r') as file:
lines = file.readlines() #read all the lines
for line in lines:
if isblock1:
(f, psd, ipj, itj) = line.split()
fout.append(f) #do this also with the other variables
if isblock2:
(t1, p1, p2, p12) = line.split()
if isblock3:
(t2, v1, v2) = line.split()
if 'Frequency' is in line:
isblock1 = True
isblock2 = isblock3 = False
if 'Phasor' is in line:
isblock2 = True
isblock1 = isblock3 = False
if 'Voltage' is in line:
isblock3 = True
isblock1 = isblock2 = False
希望能有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句