我有一个很长的一维numpy数组。我想要高效地将它写入文件,每行放N个用空格隔开的值。我尝试了几种方法,但都存在问题。
首先,我尝试将数组重塑为N列。给定一个文件句柄f:
这是相当有效的,但需要数组具有N个元素的倍数。如果最后一行只包含1个元素(且N大于1),我只想打印1个元素...而不是崩溃。
接下来,我尝试使用计数器打印,并在每第N个元素后插入换行符:
这个方法对于任何长度的数组都可以正常工作,但是非常慢(至少比我的第一个选项慢10倍)。我要输出许多文件,从许多数组中获得数据,并且由于速度原因无法使用此方法。
有没有关于高效完成这种输出的想法?
首先,我尝试将数组重塑为N列。给定一个文件句柄f:
myArray.reshape(-1, N)
for row in myArray:
print >> f, " ".join(str(val) for val in row)
这是相当有效的,但需要数组具有N个元素的倍数。如果最后一行只包含1个元素(且N大于1),我只想打印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倍)。我要输出许多文件,从许多数组中获得数据,并且由于速度原因无法使用此方法。
有没有关于高效完成这种输出的想法?