2024-09-27 23:24:42 发布
网友
我使用tofile函数从NumPy数组中写入大量二进制数据。在
tofile
因为我想节省空间,所以我想知道是否可以不必先写二进制文件,然后压缩它,然后删除它,就可以以压缩的zip格式写入该文件。在
代码的相关部分非常简单。其中energies2DL是二维Python列表:
energiesA = np.array(energies2DL, dtype=np.float32) energiesA.tofile('ACE_ions_fieldrotation.bin')
还有一个选择。使用tostring()方法将数组中的数据转换为字符串,然后使用gzip库将字符串写入压缩文件。在
tostring()
gzip
例如
In [8]: foo Out[8]: array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15]]) In [9]: import gzip In [10]: f = gzip.open('foo.bin.gz', 'wb') In [11]: f.write(foo.tostring()) Out[11]: 128 In [12]: f.close()
查看终端中的文件:
)如果我们能写就好了
f = gzip.open('foo.bin.gz', 'wb') foo.tofile(f) f.close()
但是不幸的是,numpy tofile()方法不接受gzip.open()返回的gzip file对象
tofile()
gzip.open()
可以使用^{}以压缩的NPZ格式保存数组。必须使用^{}将文件读回数组。在
示例:将foo保存到foo.npz
foo
foo.npz
In [61]: foo Out[61]: array([[ 0. , 0.0625, 0.125 , 0.1875], [ 0.25 , 0.3125, 0.375 , 0.4375], [ 0.5 , 0.5625, 0.625 , 0.6875], [ 0.75 , 0.8125, 0.875 , 0.9375]]) In [62]: np.savez_compressed("foo.npz", foo=foo)
(可以通过提供更多参数将多个数组保存到文件中。)
将数据读回数组:
还有一个选择。使用
tostring()
方法将数组中的数据转换为字符串,然后使用gzip
库将字符串写入压缩文件。在例如
查看终端中的文件:
^{pr2}$)如果我们能写就好了
但是不幸的是,numpy
tofile()
方法不接受gzip.open()
返回的gzip file对象可以使用^{} 以压缩的NPZ格式保存数组。必须使用^{} 将文件读回数组。在
示例:将
foo
保存到foo.npz
(可以通过提供更多参数将多个数组保存到文件中。)
将数据读回数组:
^{pr2}$相关问题 更多 >
编程相关推荐