如何在python中保存txt文件中的大型数组

时间:2017-12-31 21:29:33

标签: python arrays

我有2D数组:

import numpy as np

output = np.array([1,1,6])*np.arange(6)[:,None]+1

output
Out[32]: 
array([[ 1,  1,  1],
       [ 2,  2,  7],
       [ 3,  3, 13],
       [ 4,  4, 19],
       [ 5,  5, 25],
       [ 6,  6, 31]])

我尝试使用np.savetxt('file1.txt', output, fmt='%10d') 我的结果只有一行

如何将其保存在txt文件simillar中:

        x   y    z 
        1   1    1
        2   2    7
        3   3   13
        4   4   19
        5   5   25
        6   6   31

3个单独的列,每列有名称(x,y,z)

请注意:原始数组太大(40000000行和3列),我使用的是Python 3.6       我在herehere中尝试过这些解决方案但是,它不适用于我

1 个答案:

答案 0 :(得分:1)

Noor,让我猜一下 - 您正在使用Windows记事本查看文件?

我使用的Notepad ++非常聪明,可以理解在np.savetxt()创建文件时使用(默认情况下)的Unix风格的Lineendings,即使在windows下运行也是如此。

您可能希望在调用newline="\r\n"时明确指定savetxt

np.savetxt('file1.txt', output, fmt='%10d' ,header= "       x          y          z", newline="\r\n")

Doku:https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.savetxt.html

我不确定您的数据,但是这个:

import numpy as np

output = np.array([1,1,6])*np.arange(60)[:,None]+1

print(output)


np.savetxt('file1.txt', output, fmt='%10d' ,header= "       x          y          z")

生成此输出:

#        x          y          z
         1          1          1
         2          2          7
         3          3         13 
       === snipped a few lines ===
        58         58        343
        59         59        349
        60         60        355

对我来说。

  • 对于np.arange(1000000),大约32MB大,格式相似......

  • 对于np.arange(10000000),大约322MB大,格式相似......

willem-van-onsem 1 + Gb离得更近了。

我没有说明每个数字的固定10个字符的间距,我的不好。