【发布时间】:2017-06-01 11:17:24
【问题描述】:
根据 NumPy 文档 here,默认情况下,矩阵会使用 allow_pickle=True 保存,此外,它们会告诉您此默认行为可能存在哪些问题:
allow_pickle : 布尔型,可选
允许使用 Python pickles 保存对象数组。不允许 pickle 的原因包括安全性(加载 pickle 数据可以执行任意代码)和可移植性(pickled 对象可能无法在不同的 Python 安装上加载,例如,如果存储的对象需要不可用的库,并且并非所有 pickle 数据在Python 2 和 Python 3)。
默认值:真
读完之后,我当然更喜欢使用allow_pickle=False——但他们并没有说明这样使用时有什么不同。尽管有缺点,但他们默认使用allow_pickel=True 肯定是有原因的。
能否请您说明您是否使用allow_pickle=False 以及它的行为有何不同?
【问题讨论】:
-
我猜(所以不写答案)NumPy 使用 pickle 模块来保存非标准对象,因此通过禁用它,您可以限制您的代码在标准数据类型上工作。
-
听起来很有趣也很有道理。您的意思是,如果我有一些类将其实例保存在 NumPy 数组中,那么如果我禁用
pickle,它将无法保存矩阵内容.. 对吗?