我目前使用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
答案 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
将其他内容写入其中。