Сохранение обалденного вида при травлении

По умолчанию, выборка массива представлений с нулевыми значениями утрачивает отношение представления, даже если база массива тоже обрабатывается. Моя ситуация такова, что у меня есть несколько сложных контейнерных объектов, которые протравливаются. А в некоторых случаях некоторые содержащиеся данные являются представлениями в других. Сохранение независимого массива каждого представления - это не только потеря пространства, но и перезагруженные данные потеряли отношение представления.

Простой пример будет (но в моем случае контейнер более сложен, чем словарь):

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) я понятия не имею.

Ответы на вопрос(1)

Ваш ответ на вопрос