8
默認情況下,酸洗numpy視圖數組會失去視圖關係,即使數組基底也被酸洗。我的情況是,我有一些醃製的複雜容器對象。在某些情況下,一些包含的數據是其他一些數據。保存每個視圖的獨立數組不僅會造成空間損失,而且重新加載的數據也會丟失視圖關係。酸洗時保留numpy視圖
一個簡單的例子是(但在我的情況下,容器比一本字典更復雜):
import numpy as np
import cPickle
tmp = np.zeros(2)
d1 = dict(a=tmp,b=tmp[:]) # d1 to be saved: b is a view on a
pickled = cPickle.dumps(d1)
d2 = cPickle.loads(pickled) # d2 reloaded copy of d1 container
print 'd1 before:', d1
d1['b'][:] = 1
print 'd1 after: ', d1
print 'd2 before:', d2
d2['b'][:] = 1
print 'd2 after: ', d2
這將打印:
d1 before: {'a': array([ 0., 0.]), 'b': array([ 0., 0.])}
d1 after: {'a': array([ 1., 1.]), 'b': array([ 1., 1.])}
d2 before: {'a': array([ 0., 0.]), 'b': array([ 0., 0.])}
d2 after: {'a': array([ 0., 0.]), 'b': array([ 1., 1.])} # not a view anymore
我的問題:
( 1)有沒有辦法保存它? (2)(更好),有沒有辦法做到這一點,只有在基本的醃
對於(1)我認爲有可能是通過改變,等...的__setstate__
__reduce_ex_
的一些方法查看數組。但是我現在還沒有充滿信心。對於(2)我不知道。