numpy.ndarray.tofile在x条目后有断裂线?

时间:2016-12-25 00:45:01

标签: python numpy

我目前使用numpy.ndarray中内置的numpy.ndarray.tofile函数传递存储在numpy.ndarray中的数据。

这个功能的问题在于输出长线上的所有数据,使得难以得到很好的数据概览。是否有可能输出x个条目然后再创建一个新行然后继续或类似这样的东西?...

我可以打开一个文件,并将ndarray转换为string,但这也会导致一些格式问题,这就是为什么我想用numpy.ndarray.tofile函数< / p>

我在写入文件旁边有一个进程,将其转换为其他格式。转换无法执行,因为它无法识别[start。

我收到错误消息:

Expected "[", got "[-0.32252067" File position at start is 142665, currently 142678

tofile

并非如此

1 个答案:

答案 0 :(得分:4)

这是编写txt文件的基本演示

制作一个漂亮的二维数组:

In [1083]: arr=np.arange(100).reshape(10,10)
In [1084]: arr
Out[1084]: 
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
       [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
       [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
       [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
       [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
       [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
       [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
       [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]])

使用tofile撰写:

In [1085]: arr.tofile('text.txt',sep=' ')

In [1086]: cat text.txt
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99In [1087]: 

结果是一个平面列表,带有分隔符,但没有换行符。这是tofile的正常行动。 tofile真的是要写二进制文本,为方便起见,使用文本替代。

要获得更多控制权,请使用savetxt

In [1091]: np.savetxt('text.txt', arr, delimiter=' ', fmt='%.2f')
In [1092]: cat text.txt
0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00
10.00 11.00 12.00 13.00 14.00 15.00 16.00 17.00 18.00 19.00
20.00 21.00 22.00 23.00 24.00 25.00 26.00 27.00 28.00 29.00
30.00 31.00 32.00 33.00 34.00 35.00 36.00 37.00 38.00 39.00
40.00 41.00 42.00 43.00 44.00 45.00 46.00 47.00 48.00 49.00
50.00 51.00 52.00 53.00 54.00 55.00 56.00 57.00 58.00 59.00
60.00 61.00 62.00 63.00 64.00 65.00 66.00 67.00 68.00 69.00
70.00 71.00 72.00 73.00 74.00 75.00 76.00 77.00 78.00 79.00
80.00 81.00 82.00 83.00 84.00 85.00 86.00 87.00 88.00 89.00
90.00 91.00 92.00 93.00 94.00 95.00 96.00 97.00 98.00 99.00

每行写一个数组的'row'。我可以指定格式。我可以通过控制数组的形状来控制数字列。

如果需要,我可以添加页眉和页脚。我可以将文件打开为wb,然后使用savetxt将其他内容写入其中。