嗨,基本上我有基本的文本文件:
3
1 0 1
0 1 0
1 1 1
我正在尝试创建一个包含整数值的二维数组 到目前为止我的代码是:
import numpy as np
f = open('perc.txt', 'r')
n = f.readline()
j = 0
dim = int(n.rstrip(' \n'))
mat = np.zeros((dim, dim))
for i in range(dim):
n = f.readline()
line = n.rstrip(' \n')
line = line.split()
line = map(int,line)
while j < dim:
mat[i][j] = line[j]
j += 1
但是当我运行代码时,结果是:
1 0 1
0 0 0
0 0 0
但是line当前是数组[(1,1,1)],所以很明显迭代的一部分正常工作。如何让矩阵正确更新值。
答案 0 :(得分:0)
您需要在j
循环之前将while
重置为零。
答案 1 :(得分:0)
使用
with open(...) as outfile:
#outfile.write()
#outfile.read()
#outfile.readlines()
#etc
让文件自动关闭。它看起来更好,你不必记得关闭文件。
我只是阅读了整个内容并将字符串拆分为一个列表。然后我使用索引来创建数组。
arr = np.array([lines[1:])
从第2个元素开始,在lines
中为每个元素创建一个平面数组,因此我使用您在dim x dim
函数中提供的resize
来调整它的大小。 / p>
import numpy as np
lines = []
with open('perc.txt', 'r') as outfile:
lines = outfile.read().split()
>>> print lines
>>> ['3', '1', '0', '1', '0', '1', '0', '1', '1', '1']
arr = np.array([lines[1:]])
dim = int(lines[0])
arr.resize(dim, dim)
>>> print arr
>>> [['1' '0' '1']
['0' '1' '0']
['1' '1' '1']]