如何将3d矩阵/数组写入文本文件python

问题描述 投票:0回答:3

我正在尝试为文本文件编写3D矩阵/数组,事实证明它相当困难。我已经尝试过file.write(str(matrix))并且可以正确地编写它,但是它并没有说明我后来提取数据所需的方式。

我有什么;

[[1, 2, 3,][4, 5, 6][7, 8, 9]]

我希望文件包含什么;

1 2 3
4 5 6
7 8 9

我正在读取这样的文件,并且我希望它也易于阅读。

with open("matrix.txt") as textFile:
    matrix = [line.split() for line in textFile]

任何想法?

python
3个回答
0
投票

您可以将矩阵的各个行转换为由空格分隔的字符串,并将其写入文本文件。

matrix = [[1, 2, 3,],[4, 5, 6],[7, 8, 9]]

with open('matrix.txt', 'w') as testfile:
    for row in matrix:
        testfile.write(' '.join([str(a) for a in row]) + '\n')

0
投票

[如果只需要写入数据并以后可以从Python程序中检索数据,那么压缩的“文本”文件只会使事情变得复杂。

这是因为Python附带了pickle模块,该模块可以序列化有意义的可序列化对象,并随后以无缝方式从文件中检索它们。

在这种情况下,如果您的“矩阵”位于具有该名称的变量上,则您需要的所有代码是:

import pickle
pickle.dump(matrix, open("myfile.bin", "wb"))

并在以后检索:

import pickle
matrix = pickle.load(open("myfile.bin", "rb"))

现在,如果您需要文本和人类可读的文本,那么矩阵就是列表中包含数字元素且没有任意对象的列表,json模块将完全相同,并生成一个文件,该文件不仅易于阅读,而且可以在许多其他语言和库下理解:

import json
json.dump(matrix, open("myfile.bin", "wb"))

# retrieve: 
matrix = json.load(open("myfile.bin", "rb"))

推出您自己的代码 [续]


0
投票

您可以使用numpy.savetxt

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

np.savetxt(filename, a)
© www.soinside.com 2019 - 2024. All rights reserved.