我试图找到一种能够从文本文件中输入矩阵的方法;
例如,文本文件将包含
1 2 3
4 5 6
7 8 9
它会生成一个带有这些数字的矩阵并将其放入矩阵= [[1,2,3],[4,5,6],[7,8,9]]
然后这必须与我打印矩阵的方式兼容:
print('\n'.join([' '.join(map(str, row)) for row in matrix]))
到目前为止,我试过了这个
chemin =输入(' entrez le chemin du fichier')
path = input('enter file location')
f = open ( path , 'r')
matrix = [ map(int,line.split(','))) for line in f if line.strip() != "" ]
它只是返回一个地图对象,当我尝试打印矩阵时返回错误。
我做错了什么?矩阵应包含从文本文件中读取的矩阵而不是地图对象,我不想使用外部库,如numpy
由于
答案 0 :(得分:2)
您可以使用列表理解:
<强> myfile.txt
强>
1 2 3
4 5 6
7 8 9
>>> matrix = open('myfile.txt').read()
>>> matrix = [item.split() for item in matrix.split('\n')[:-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('\n')[:-1]]
...
>>> matrix('myfile.txt')
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
>>>
答案 1 :(得分:0)
如numpy.genfromtxt()中所述:
import StringIO, numpy
data = "1 2 3\n4 5 6\n7 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('\n')]
> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
答案 2 :(得分:0)
正在使用python2(例如Python 2.7.10)和python3(例如Python 3.6.4)
class Company extends Model {
public function sqlWithJoin() {
$users = DB::table('company')
->leftJoin('user', 'company.id', '=', 'user.company_id')
->get();
return $users;
}
}