如何解决从文件中读取二维数组
我正在用 Python 做一个模拟项目,遇到了一个问题。我需要将一个二维数组保存到一个文件中,以便我以后可以使用它的数据。初始列表如下所示:
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("%s\n" % 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。
解决方法
只写入没有 []
的数字如何?您可以在写入文件期间使用嵌套的 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
,
您可以尝试使用 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,6]]
随时要求澄清
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。