我正在编写一个具有numpy数组类型属性的类。 由于我希望它是只读的,我将其WRITABLE标志设置为false:
import numpy as np
class MyClass:
def __init__(self):
self.my_array = np.zeros(5)
self.my_array.setflags(write=False)
在完成其他一些事情之后,我将MyClass转储到pickle文件中:
pickle.dump(self, writer)
稍后,我使用x = pickle.load(reader)
加载它,但是WRITABLE标志为true。
如何使pickle转储保留numpy数组WRITABLE标志?
答案 0 :(得分:0)
对于酸洗数组,numpy使用np.save
函数。此保存的详细信息位于np.lib.format
文件中。此格式保存数据缓冲区的标头和字节表示。标题的内容是字典。
In [1212]: np.lib.format.header_data_from_array_1_0(x)
Out[1212]: {'descr': '<i4', 'fortran_order': False, 'shape': (2, 3)}
In [1213]: np.lib.format.header_data_from_array_1_0(u)
Out[1213]: {'descr': '<c16', 'fortran_order': False, 'shape': (4,)}
正如您所看到的那样,它不会保存整个FLAGS
属性,只会保存订单信息。
可以使用__reduce__
和__setstate__
方法自定义类别腌制。
另见