如何创建从文本文件中读取的矩阵数组

时间:2016-10-23 16:45:27

标签: python arrays python-3.x matrix

如果我有一个文本文件,其中每一行是矩阵中的一行,并且每个矩阵用新行分隔,例如

1234
1234

2345
2345

我如何创建这些矩阵的数组(不使用numpy)。

对于1个矩阵我做:

with open("matrix.txt", "r") as file:
    matrix=[line.split() for line in file]

为我试过的多个矩阵推断这段代码:

x=0
matrix=[]
with open("matrix.txt", "r") as file:
    for line in file:
        if line == "\n":
           x+=1
        else:
            matrix[x].append([line.split()])
print(matrix)

如果文本文件中的行被添加到像之前的矩阵中,但如果它遇到换行符,它会将下一行附加到3d数组的下一个索引,所以我最终会得到一个数组数组。

我列出的代码给了我以及我知道应该发生的索引错误,因为当我用x增加矩阵索引时它实际上并不存在,因为我从未创建它。

我被困住了,可以帮忙。请问您是否需要我澄清某些内容,或者我是否已经解释得不够好。谢谢!

编辑:输出看起来像[[[1,2,3,4],[1,2,3,4]],[[2,3,4,5],[2,3,4] ,5]]]

因此矩阵[0] [1] [2]将访问第一个矩阵并检索3。

2 个答案:

答案 0 :(得分:1)

好的,试试这个::

x=0
matrix=[]
row = []
with open("matrix.txt", "r") as file:
    for line in file:
        line = line.strip("\n")
        if line == "":
           matrix.append(row)
           row = []
        else:
            row.append([int(x) for x in list(line)])

if (len(row) > 0):
    matrix.append(row)

print(matrix)

结果:[[[1,2,3,4],[1,2,3,4]],[[2,3,4,5],[2,3,4,5]]]

答案 1 :(得分:0)

只需检查列表的长度,并在必要时添加项目:

编辑:由于您的工作方法没有拆分成单独的整数,因此扩展版本会很奇怪。已更新至已修改的问题

content = "1234\n1234\n\n2345\n2345"

x=0
matrixes = []
for line in content.split('\n'):
    if line is "":
        x+=1
    else:
        if len(matrixes) <= x:
            matrixes.append([[int(x) for x in list(line)]])
        else:
            matrixes[x].append([int(x) for x in list(line)])

print(matrixes[0][0][0])会产生:1

(链接到更新的示例:https://repl.it/EDtz/0