从文本文件中读取多维数组并将数据存储在多维数组中

时间:2016-07-07 15:34:53

标签: python arrays

我正在尝试从文件HD.txt中读取多维数组,并将数据存储在数组中进行计算。 HD.txt如下所示:

 [[[27],[0],[0],[0],[0],[0],[0]],
 [[0],[0],[0],[0],[0],[0],[0]],
 [[0],[0],[0],[0],[0],[0],[0]]]

 [[102],[0],[0],[0],[0],[0]] 

我想读取这两个数组并将其存储在两个单独的数组中。对于例如HD.txt中的第一个数组是3维整数数组(3X7X1数组),第二个数组是2d整数数组。我想分别将它们读作3d和2d数组。我不是python的专家,下面是我尝试读取第一个数组。毋庸置疑,它并没有像我想的那样成功。非常感谢您对此事的任何帮助。 感谢

with open("HD.txt", "r") as f:
for line in f.readlines():
   S = line.split(' ')

2 个答案:

答案 0 :(得分:0)

使用line.split()时,您需要一个介于每个值之间的字符。由于HD.txt在每个值之间都有逗号,因此您只需移除每个[]字符,然后调用split()。以下是一个例子。

arrayOne = []
arrayTwo = []
next = False

with open("HD.txt", "r") as f:
    for line in f.readlines():
        if line[0] == '\n':
           next = True  
        else:          
            line = line.replace("[", "")
            line = line.replace("]", "")
            line = line.replace("\n", "")

            for i in line.split(','):
                if next:
                    arrayOne.append(i)
                else:
                    arrayTwo.append(i)

如果该行为空,则表示第一个字符为\n,您可以开始收集第二个数组。确保还删除换行符。

答案 1 :(得分:0)

由于您可以控制数据生成,我建议您删除括号,只显示由空格(对于列)和返回(对于行)分隔的数据。它会引导您查看HD.txt的内容:

27 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0

102 0 0 0 0 0

然后要重建数组,请使用split()包中的shlex函数(https://docs.python.org/2/library/shlex.html)。它将东西从空间中分离出来。但是,在您的情况下,您必须将每个项目转换为int。这导致我们:

import shlex

array = []

with open("HD.txt", "r") as f:
 i = 0
 for line in f.readlines():
  array[i] = shlex.split(line)
  i += 1

不要忘记使用int()

为此后的每个值强制转换整数类型