【发布时间】:2016-02-04 04:00:36
【问题描述】:
我有一个二维数组,我想将它写入一个文件,数组看起来几乎像这样:
>>print (arr)
[0 0 20
0 5 520
2 0 720
....
8 -20 150
0 10 10]
当我尝试将其写入文件时,它被保存为最后一个输出,这里是我使用的:
ff = open('output.txt', 'w')
ff.write(arr)
这是文件中的结果
[0 0 20
0 5 520
2 0 720
....
8 -20 150
0 10 10]
我在本网站的另一个问题中看到了解决方案 但我还是有问题,
np.ndarray.tofile(arr,"output.txt",'\n','%s')
文件中的输出是这样的:
0 0 20 0 50 ...
以此类推直到数组结束
我希望输出如下所示:
0 0 20
0 5 520
2 0 720
.
.
.
8 -20 150
0 10 10
【问题讨论】:
-
你想要
np.savetxt -
@ali_m 我试过 np.savetxt 但它需要大约 26 秒,时间太长了
-
我想试试这个
import numpy as np x = np.arange(20).reshape((4,5)) np.savetxt('test.txt', x),但问题是我不知道如何排列和重塑我的阵列 -
保存到文本仅在您需要数组为人类可读格式时才有用。如果您的数组需要 26 秒来保存,那么我无法想象很多人会想要阅读它......如果您想要性能,那么您应该保存为
.npy文件(例如使用np.save)或作为原始二进制文件 (array.tofile())。 -
听起来您真正的问题是您不了解如何重塑 numpy 数组。您的问题中的输出看起来像一维数组(甚至可能是一个列表),而不是您的问题标题所述的二维数组。无论如何,将 numpy 数组保存到文本文件是一个在 SO 之前已经讨论过很多次的问题,所以我投票结束。