【发布时间】:2018-03-13 14:18:04
【问题描述】:
numpy.savez() 函数允许将 numpy 对象存储在文件中。将相同的对象存储在两个文件中会导致两个不同的文件:
import numpy as np
some_array = np.arange(42)
np.savez('/tmp/file1', some_array=some_array)
np.savez('/tmp/file2', some_array=some_array)
这两个文件不同:
$ diff /tmp/file1.npz /tmp/file2.npz
Binary files /tmp/file1.npz and /tmp/file2.npz differ
为什么文件不一样?是否包含一些随机行为、文件名或时间戳?这可以解决或修复吗? (这是一个错误吗?)
请注意,np.save() 并非如此。 np.save() 生成的文件对于相同的输入是相同的。所以我猜这与压缩数据有关。
AFAICS 只有两点不同:
$ xxd /tmp/file1.npz > /tmp/file1.hex
$ xxd /tmp/file2.npz > /tmp/file2.hex
$ diff -u0 /tmp/file1.hex /tmp/file2.hex
--- /tmp/file1.hex 2018-03-13 13:39:12.235897095 +0100
+++ /tmp/file2.hex 2018-03-13 13:39:08.743927081 +0100
@@ -1 +1 @@
-0000000: 504b 0304 1400 0000 0000 ce6c 6d4c 9c9d PK.........lmL..
+0000000: 504b 0304 1400 0000 0000 cf6c 6d4c 9c9d PK.........lmL..
@@ -30 +30 @@
-00001d0: 1403 1400 0000 0000 ce6c 6d4c 9c9d 6ad9 .........lmL..j.
+00001d0: 1403 1400 0000 0000 cf6c 6d4c 9c9d 6ad9 .........lmL..j.
我在implementation of the function 中找不到任何好的提示,但我还没有检查邮政编码(Python 3.6 也可能有所作为)。
注意:使用 Python 2.7 和 numpy 1.9.2 测试。
【问题讨论】: