来自文本文件的矩阵输入(python 3)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自文本文件的矩阵输入(python 3)相关的知识,希望对你有一定的参考价值。
我试图找到一种能够从文本文件输入矩阵的方法;
例如,文本文件将包含
1 2 3
4 5 6
7 8 9
并且它将使用这些数字制作矩阵并将其放入矩阵= [[1,2,3],[4,5,6],[7,8,9]]
然后这必须与我打印矩阵的方式兼容:
print('
'.join([' '.join(map(str, row)) for row in matrix]))
到目前为止,我试过这个
path = input('输入文件的路径')
path = input('enter file location')
f = open ( path , 'r')
matrix = [ map(int,line.split(','))) for line in f if line.strip() != "" ]
它只是返回一个地图对象,当我尝试打印矩阵时返回一个错误。
我究竟做错了什么? Matrix应包含从文本文件中读取的矩阵而不是map对象,我不想使用numpy等外部库
谢谢
答案
你可以使用list comprehension:
myfile.txt
:
1 2 3
4 5 6
7 8 9
>>> matrix = open('myfile.txt').read()
>>> matrix = [item.split() for item in matrix.split('
')[:-1]]
>>> matrix
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
>>>
您还可以为此创建一个函数:
>>> def matrix(file):
... contents = open(file).read()
... return [item.split() for item in contents.split('
')[:-1]]
...
>>> matrix('myfile.txt')
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
>>>
另一答案
import StringIO, numpy
data = "1 2 3
4 5 6
7 8 9"
numpy.genfromtxt(StringIO.StringIO(data), delimiter = ' ')
> array([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.]])
拿两个:
[list(map(int, line.split(' '))) for line in data.split('
')]
> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
另一答案
正在使用python2(例如Python 2.7.10)和python3(例如Python 3.6.4)
rows=3
cols=3
with open('in.txt') as f:
data = []
for i in range(0, rows):
data.append(list(map(int, f.readline().split()[:cols])))
print (data)
以上是关于来自文本文件的矩阵输入(python 3)的主要内容,如果未能解决你的问题,请参考以下文章