如何将numpy.array()输出字面写入文本文件

时间:2015-11-14 04:28:26

标签: python numpy

我在python中有以下功能:

 def writeWinningBoards():
    f = open("goodBoards.txt", "a")
    for row in tableros:
        for index, value in enumerate(row):
            if value == 1:
                row[index] = 'x'
            elif value == 2:
                row[index] = ' '
            elif value == 3:
                row[index] = 'o'
        row = np.array(row).reshape(3,3)
        f.write(row)
        print row
    f.close()

如何写入文件,数组的控制台表示,打印行时我有这个:

 ['o' 'o' 'x']
 ['x' 'x' 'x']
 ['o' 'x' 'o']

但是在文件中我得到了这样的东西:

 x    o   x      o x        x o      xo    o  x   

我怎么能这样做?我只想要一种用户友好的方式来存储tic tac toe gameboard以供阅读。

3 个答案:

答案 0 :(得分:1)

我建议的方法很多:

row_reshaped = np.array(row).reshape(3,3)
row_reshaped_as_base_array = row_reshaped.tolist()
row_reshaped_as_json = json.dumps(row_reshaped_as_base_array
with open("goodBoards.txt", "a") as f:
   f.write(row_reshaped_as_json)

我不进行方法链接,并且发现列表理解对我来说有点过于简洁。

答案 1 :(得分:0)

这是一个选项:

import numpy as np
import pandas as pd

a = np.array([["x", "o"], ["o", "x"]])

df = pd.DataFrame(a)
df.to_csv("my_file.txt", header=False, index=False, sep=" ")

结果:

$ cat my_file.txt
x o
o x

答案 2 :(得分:0)

f.write(row)print row之间的区别不仅仅是写入文件而另一个写入屏幕。在python中,print语句将在每次调用后附加换行符,而打开文件对象上的write语句则不会。{/ p>

相关问题