我正在將多維數組數據寫入文本文件。我正在做這一行明智的。文件的大小不斷增長。我應該遵循什麼技術來獲得輸出文件的最小可能大小?減少文本文件大小的編程技巧
2
A
回答
5
如果你的數組有很多個零,你可以使用稀疏矩陣表示法:而不是將整個矩陣寫入文件,只寫非零元素(當然,你需要用它的索引寫每個元素,一個接一個) 。假設你想寫這個矩陣:
0 0 0 2
1 0 0 0
0 0 0 0
0 0 3 0
0 0 0 0
你可以這樣寫的文件:
0 3 2
1 0 1
3 2 3
在每一行中,第一個數字是行,第二個是列第三是儲值。
如果您將文件寫入文本,您可以切換爲二進制格式:當您寫入文本時,您將爲每個數字使用一個字節;在二進制文件中,每個數字使用固定數量的字節,並且不必代表空格和換行符:
如果使用文本格式,將數字100 200 300
寫入文件需要11個字節。但是如果你寫三個16位整數,它們可以用6個字節來寫。在Python中,使用 「WB」 和 「RB」 打開二進制文件模式,然後將其寫入的字節:
f = open('file', 'wb')
f.write('%c' % 123)
f.close()
或者 - 更高效,
import array
f = open('file', 'wb')
data = array.array('B')
data.append(1)
data.append(2)
data.append(3)
data.tofile(f)
f.close()
否則,那麼你或許應該嘗試使用標準技術壓縮數據結構。既然你python
標記你的問題,你可能有興趣在這些Python libraries for data compression
也有這個漂亮introduction to data compression,在理論方面有點重,如果你想知道更多一點。
1
因爲數據是相當稀少,可以用SciPyPackages/Sparse關於I/O可以看看this
稀疏矩陣是簡單地用大量零個值的矩陣。
所以,如果你想自己寫代碼。當保存sparse matrix
時,只需要輸出非零元素的位置和元素值。例如:
的sparse matrix
:
1 0 0 1
0 0 0 0
0 0 5 0
0 0 0 10
的數據需要保存到文件是:
0 0 1
0 3 1
2 2 5
3 3 10
當sparse matrix
種植者,這種方法可以減少數據保存到file
。
何時使用data file
,您只需要從數據中恢復original matrix
。
祝你好運
相關問題
- 1. 減少JavaScript的lib文件大小編碼技術
- 2. 減少HTML文件大小?
- 3. 減少SWF文件大小
- 4. 減少.XAP文件大小?
- 5. 如何減少編程在C#中的XML文件的大小
- 6. 以編程方式減少JPEG文件大小
- 7. 減少圖像的文件大小
- 8. 減少散點圖的文件大小
- 9. 減少.NET中的PNG文件大小
- 10. 減少外部jar文件的大小
- 11. 減少UIImage的文件大小?
- 12. 減少DOMPDF生成的文件大小
- 13. 如何減少我的文本文件大小?
- 14. 減少pyinstaller可執行文件大小
- 15. CPP MediaFoundation - mp4文件大小減少
- 16. 熊貓和HDF5文件大小減少
- 17. 減少mercurial .hg文件夾大小
- 18. APK文件大小減少清單
- 19. 減少圖像文件大小
- 20. 減少qemu快照文件大小
- 21. 如何減少swf文件大小flex
- 22. 如何減少圖像文件大小
- 23. 減少.git文件夾大小:Jenkins版
- 24. 用php減少jpeg文件大小
- 25. Magick.NET減少gif文件大小
- 26. 使用Ghostscript減少PDF文件大小
- 27. 如何減少富文本的大小:編輯jsf
- 28. 最小化Flex應用程序大小的一般技巧和技巧
- 29. Asterisk編程技巧?
- 30. 爲什麼我的編譯文件的大小減少了?
如何稀疏的數據?如果數據非常稀疏,則可以只存儲非零值元素的位置。 –
該文件是否需要保持人類可讀? –
數據非常稀疏(約32k維度,可能約有200個值)。我使用-1作爲缺失值(或0)的佔位符。我在這種形式中需要它,因爲我正在進一步處理數據。 – viper