2017-04-07 2 views
0

Ich speichere ein Wörterbuch von numpy Arrays in eine Gurke-Datei. Und dann entpacken Sie sie zu neuen Variablen. Code ist wie folgt:Python - Datatype Retention beim Speichern in Pickle-Datei

Abbeizen:

# here the variables 'train_dataset', 'train_labels' etc are all np arrays. 
save = { 
    'train_dataset': train_dataset, 
    'train_labels': train_labels, 
    'valid_dataset': valid_dataset, 
    'valid_labels': valid_labels, 
    'test_dataset': test_dataset, 
    'test_labels': test_labels, 
    } 
pickle.dump(save, f, pickle.HIGHEST_PROTOCOL) 

Unpickling:

save = pickle.load(f) 
train_dataset_new = save['train_dataset'] 
train_labels_new = save['train_labels'] 
valid_dataset_new = save['valid_dataset'] 
valid_labels_new = save['valid_labels'] 
test_dataset_new = save['test_dataset'] 
test_labels_new = save['test_labels'] 

Werden die Variablen aus der Beize-Datei geladen auch np Arrays sein? Bitte erläutern Sie auch ein bisschen, wenn Sie können.

Dank

Antwort

1

direkt aus den docs Zitiert:

eine Zeichenfolge aus der geöffneten Datei Objektdatei lesen und es als Stream Beize Daten zu interpretieren, zu rekonstruieren und dem ursprünglichen Objekt Hierarchie zurück.

Kleiner Test-Code, den Datentyp der geladenen Variable zu überprüfen, die <type 'numpy.ndarray'> ist:

import numpy as np 
import pickle 

#f = open("pickled.p", "wb") 

train_dataset = np.ones(5) 
train_labels = np.ones(5) 
valid_dataset = np.ones(5) 
valid_labels = np.ones(5) 
test_dataset = np.ones(5) 
test_labels = np.ones(5) 

print type(train_dataset) # <type 'numpy.ndarray'> 
print train_dataset.shape # <5L,> 

# here the variables 'train_dataset', 'train_labels' etc are all np arrays. 
save = { 
    'train_dataset': train_dataset, 
    'train_labels': train_labels, 
    'valid_dataset': valid_dataset, 
    'valid_labels': valid_labels, 
    'test_dataset': test_dataset, 
    'test_labels': test_labels, 
    } 
pickle.dump(save, open("save.p", "wb"), pickle.HIGHEST_PROTOCOL) 

save = pickle.load(open("save.p", "rb")) 
train_dataset_new = save['train_dataset'] 
train_labels_new = save['train_labels'] 
valid_dataset_new = save['valid_dataset'] 
valid_labels_new = save['valid_labels'] 
test_dataset_new = save['test_dataset'] 
test_labels_new = save['test_labels'] 

print type(train_dataset_new) # <type 'numpy.ndarray'> 
print train_dataset_new.shape # <5L,>