【发布时间】:2014-09-23 09:34:44
【问题描述】:
我有一个相当长的一维 numpy 数组。我想有效地将它写入文件,在文件中每行放置 N 个空格分隔的值。我尝试了几种方法,但都有很大的问题。
首先,我尝试将数组重塑为 N 列宽。给定一个文件句柄,f:
myArray.reshape(-1, N)
for row in myArray:
print >> f, " ".join(str(val) for val in row)
这非常有效,但要求数组具有 N 个元素的倍数。如果最后一行只包含 1 个元素(并且 N 大于一个),我只想打印 1 个元素...而不是崩溃。
接下来,我尝试使用计数器打印,并在每个第 N 个元素后插入一个换行符:
i = 1
for val in myArray:
if i < N:
print >> f, str(val)+" ",
i+=1
else:
print >> f, str(val)
i = 1
这适用于任何长度的数组,但速度极慢(至少比我的第一个选项长 10 倍)。我正在从许多数组中输出许多文件,由于速度原因无法使用此方法。
有什么想法可以有效地进行此输出吗?
【问题讨论】:
标签: python arrays performance file-io numpy