我目前正在numpy.ndarray使用numpy.ndarray.tofile内置的函数传递存储在 a中的数据numpy.ndarray。
此功能的问题是将所有数据输出在长线上,从而难以获得很好的数据概览。是否有可能让它输出 x 个条目然后创建一个新行然后继续或类似的东西?..
我可以打开一个文件,然后将其转换ndarray为 a string,但这也会导致一些格式问题,这就是我想用numpy.ndarray.tofile函数来做的原因
我在写入文件旁边有一个过程,可以将其转换为不同的格式。无法执行转换,因为它无法识别 [ 开始。
我收到错误消息:
Expected "[", got "[-0.32252067" File position at start is 142665, currently 142678
Run Code Online (Sandbox Code Playgroud)
但事实并非如此 tofile
下面是一个写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]])
Run Code Online (Sandbox Code Playgroud)
写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]:
Run Code Online (Sandbox Code Playgroud)
结果是一个带有分隔符的平面列表,但没有换行符。这是 的正常操作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
Run Code Online (Sandbox Code Playgroud)
这将每行写入数组的一个“行”。我可以指定格式。我可以通过控制数组的形状来控制列数。
如果需要,我可以添加页眉和页脚。我可以打开一个文件wb,并使用savetxt.