我制作了一个txt
文件,其中包含我的二维矩阵的条目N x N
,按以下方式排序:
row column
1 1
1 2
1 3
.
.
.
1 N
2 1
2 2
.
.
.
2 N
.
.
.
N 1
N 2
.
.
.
N N
其中数字代表行(左)和列(右)的索引,从1到N
。
我想用Python阅读这篇文章,这样我就可以将我的矩阵存储为列表列表,就像你使用np.loadtxt
得到的那样,但是,我不能轻易地在这里使用(或者至少我不知道怎么样)
编辑:
我的文件txt
的简化版,row, column, value
,N=5
(从0开始计算)
0 0 0.3
0 1 0.4
0 2 0.2
0 3 0.3
0 4 0.7
1 0 9.3
1 1 3.5
1 2 2.4
1 3 3.1
1 4 3.4
2 0 2.3
2 1 4.5
2 2 7.8
2 3 9.2
2 4 8.1
3 0 7.2
3 1 3.2
3 2 8.2
3 3 7.2
3 4 7,4
4 0 0.2
4 1 8.2
4 2 9.2
4 3 0.2
4 4 0.2
答案 0 :(得分:1)
蛮力方法:
table = []
row_values = []
last_row = ''
for line in f:
row, col, value = line.split()
if row != last_row:
last_row = row
row_values = []
table.append(row_values)
row_values.append(float(value))
一个更聪明的方法,它获取所有值,然后将它们切成行:
row_numbers, column_numbers, values = zip(*(line.split() for line in f))
rows = int(max(row_numbers)) + 1
columns = int(max(column_numbers)) + 1
values = [float(v) for v in values]
data = [values[n:] for n in range(0, len(values), columns)]
assert len(data) == rows
答案 1 :(得分:0)
我认为最好的方法是使用np.reshape
:
import numpy as np
a = np.loadtxt('file.txt')
third_column = a[:, 2]
new_matrix = third_column.reshape((dimension_x, dimension_y))
应该知道dimension_x
和dimension_y
。