python - Pickle dump-load 似乎修改了 numpy 数据
问题描述
我希望 pickle 写入读取会返回输入数据的副本。这段代码似乎与我的预期相矛盾:
import pickle
import filecmp
import numpy as np
def pload(filename):
with open(filename, "rb") as f:
return pickle.load(f)
def pdump(data, filename):
with open(filename, "wb") as f:
pickle.dump(data, f)
v1 = np.ndarray([1, 2])
v2 = np.float64(1.2)
for v in [(v1,), (v2,), (v1, v2)]:
pdump(v, "/tmp/test-a")
tmp = pload("/tmp/test-a")
numpy_eq = all([np.array_equal(a, b) for a, b in zip(v, tmp)])
pdump(tmp, "/tmp/test-b")
pickle_eq = filecmp.cmp("/tmp/test-a", "/tmp/test-b")
print(f"Equality: numpy={numpy_eq}, pickle={pickle_eq}")
该脚本输出:
Equality: numpy=True, pickle=True
Equality: numpy=True, pickle=True
Equality: numpy=True, pickle=False
我希望看到一切真实;最后一行显示pickle=False。有谁知道为什么?
解决方案
推荐阅读
- wordpress - Wordpress:显示 5 个最新的自定义分类术语
- cgal - CGAL sqrt 函数不返回参数类型
- ios - 无法在 Linux 上交叉编译 iOS 程序
- java - PySpark 3.0.1 无法在 Tensorflow 2.1.0 中运行分布式训练
- python - 您好,如果我想安装 python 模块 hexdump 出现此错误,如何解决?
- django - 使用序列化程序 Django (DRF) 创建对象
- java - 更改字符串的输入颜色
- amazon-web-services - 无法通过 Cloudfront URL 访问 S3 对象
- android - 如何设置 altbeacon 以防止在 Android 打瞌睡时停止扫描
- python - 如何在 django rest 框架(DRF)中创建有助于 OneToOne 关系的两个模型的新实例?