如何在Python中从文本文件中读取两个数组或矩阵?

如何在Python中从文本文件中读取两个数组或矩阵?,python,arrays,numpy,matrix,text-files,Python,Arrays,Numpy,Matrix,Text Files,我对编程和python都是新手。所以我面临很多问题。我需要一些帮助来阅读python中的文本文件 在我的输入文本文件中,我有两个带有字符串的数据数组 HEAD1 1 0 0 2 3 4 3 3 0 END1 HEAD2 2 3 4 8 7 5 1 0 7 END2 现在我想让python读取这个文件,并将这两个数组存储为2个数组或2个矩阵。数组大小不是固定的,可以是任意大小。Python必须根据头部和末端决定大小。我怎么做 我尝试了numpy.loadtxt和numpy.getfromtxt

我对编程和python都是新手。所以我面临很多问题。我需要一些帮助来阅读python中的文本文件

在我的输入文本文件中,我有两个带有字符串的数据数组

HEAD1
1 0 0
2 3 4
3 3 0
END1

HEAD2
2 3 4
8 7 5
1 0 7
END2
现在我想让python读取这个文件,并将这两个数组存储为2个数组或2个矩阵。数组大小不是固定的,可以是任意大小。Python必须根据头部和末端决定大小。我怎么做

我尝试了numpy.loadtxt和numpy.getfromtxt。在numpy.getfromtxt中,我得到了字符串错误。不使用字符串,它将这2个数组变成1个数组

以下是尝试过但无法做到的事情

import math as m
import numpy as np

file_name=input("Input file name(with extension):")
file=open(file_name,'r')

line=file.readline()
while line!= '':
    print(line,end='')
    line=file.readline()

##table=np.loadtxt(file_name)
##print('table=')
##print(table)
##
table2=np.genfromtxt(file_name,comments='#') 
print('table2=')
print(table2) 

由于我们不知道这种带有“HEAD”和“END”的格式,我认为您必须自己“分块”这些数组:

import numpy as np

def tokenizer(fname):
    with open(fname) as f:
        chunk = []
        for line in f:
            if 'HEAD'in line:
                continue
            if 'END' in line:
                yield chunk
                chunk = []
                continue
            chunk.append(line)


arrays = [np.loadtxt(A) for A in tokenizer('yourfile.txt')]

由于我们不知道这种带有“HEAD”和“END”的格式,我认为您必须自己“分块”这些数组:

import numpy as np

def tokenizer(fname):
    with open(fname) as f:
        chunk = []
        for line in f:
            if 'HEAD'in line:
                continue
            if 'END' in line:
                yield chunk
                chunk = []
                continue
            chunk.append(line)


arrays = [np.loadtxt(A) for A in tokenizer('yourfile.txt')]

好的。。。。要读取这两个数组,我必须稍微更改输入文件。我在每个数组前面添加了一个字符串列。我必须这样做才能让python知道这是两个不同的数组。以下是输入文本文件:

    *HEAD1
    N 1 0 0
    N 2 3 4
    N 3 3 0
    *****
    *HEAD2
    E 2 3 4
    E 8 7 5
    E 1 0 7
    *****
现在,为了从文本文件中读取这两个数组,我编写了以下代码:

import numpy as np

file_name=input("Input file name(with extension):")

#   read the input file

with open(file_name) as f:
    lines1 = (line for line in f if line.startswith('N'))
    n_table = np.loadtxt(lines1, comments='*',usecols=(1,2,3))
    print('n_table=')
    print(n_table)

with open(file_name) as f:
    lines2=(line for line in f if line.startswith('E'))
    e_table = np.loadtxt(lines2,comments='*',usecols=(1,2,3,4,5))
    print('e_table=')
    print(e_table)

好的。。。。要读取这两个数组,我必须稍微更改输入文件。我在每个数组前面添加了一个字符串列。我必须这样做才能让python知道这是两个不同的数组。以下是输入文本文件:

    *HEAD1
    N 1 0 0
    N 2 3 4
    N 3 3 0
    *****
    *HEAD2
    E 2 3 4
    E 8 7 5
    E 1 0 7
    *****
现在,为了从文本文件中读取这两个数组,我编写了以下代码:

import numpy as np

file_name=input("Input file name(with extension):")

#   read the input file

with open(file_name) as f:
    lines1 = (line for line in f if line.startswith('N'))
    n_table = np.loadtxt(lines1, comments='*',usecols=(1,2,3))
    print('n_table=')
    print(n_table)

with open(file_name) as f:
    lines2=(line for line in f if line.startswith('E'))
    e_table = np.loadtxt(lines2,comments='*',usecols=(1,2,3,4,5))
    print('e_table=')
    print(e_table)

你能展示一些你尝试过的代码吗?就像zmo说的,你能展示你的尝试吗?你能展示一些你尝试过的代码吗?就像zmo说的,你能展示你的尝试吗?对不起,我的错,我误读了这个问题,我认为你的答案不正确。进行虚拟编辑并向上投票。:-)对不起,我的错,我误读了这个问题,我认为你的答案是错误的。进行虚拟编辑并向上投票。:-)