从文件中读取2D数组



我正在用Python做一个模拟项目,遇到了一个问题。我需要将2D数组保存到文件中,以便以后使用其中的数据。初始列表如下所示:

int_array3 = [[14,5], [9,3], [25,5]]
#writing to file:
with open('data.txt', 'w') as f:
for num in int_array3:
f.write("%sn" % num)

文件中的数据如下所示:

[14  5]
[9 3]
[25  6]

我读了这段代码,但它不是一个整数列表。

with open('data.txt', 'r') as f:
result = f.readlines()
result = [x.strip() for x in result]

结果列表如下所示:

['[14  5]', '[9 3]', '[25  6]']

有谁能给我推荐一下如何使用它吗?我希望结果列表的形状与我最初的列表相同。我用的是numpy

您可以尝试使用eval()将字符串转换为数组,如下所示:

A = ['[14  5]', '[9 3]', '[25  6]']
arr = []
for i in range(len(A)):
l = eval(A[i].split()[0] + ',' + A[i].split()[1])
arr.append(l)
print(A)
# [[14, 5], [9, 3], [25, 6]]

请随时要求澄清

只写没有[]的数字到文件怎么样?您可以在写入文件期间使用嵌套的for循环来实现这一点。只是要记住数字之间要分开(例如用空格)。然后,你可以逐行读取你的文件,使用split(),然后你会得到一个数字数组,但现在它是一个字符串数组。要从中生成数字,需要将字符串数字强制转换为int。我认为最简单的方法是使用列表推导来构建新的数字列表。

为了说明上面的内容,您编写的代码应该是这样的:
int_array3 = [[14,5], [9,3], [25,5]]
#writing to file:
with open('data.txt', 'w') as f:
for vec in int_array3:
for number in vec:
f.write("%d " % number)
f.write("n")

你可以用:

with open('data.txt', 'r') as f:
for line in f:
vector = [int(x) for x in line.split()]
#Do something with vector variable

最新更新