我将numpy数组的字典保存到pickle文件中。然后将它们拆分为新的变量。代码是这样的:
酸洗:
# 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)
取储存:
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']
从pickle文件加载的变量也是np数组吗?如果可以,请详细说明一下。
由于
答案 0 :(得分:1)
直接从docs:
报价从打开的文件对象文件中读取一个字符串并将其解释为a pickle数据流,重建并返回原始对象 层次结构。
检查加载变量数据类型的测试代码很少,<type 'numpy.ndarray'>
:
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,>