微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从文件中读取二维数组

如何解决从文件中读取二维数组

我正在用 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 举报,一经查实,本站将立刻删除。