Python - 保存到Pickle文件的数据类型保留

时间:2017-04-07 12:53:33

标签: python numpy pickle

我将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数组吗?如果可以,请详细说明一下。

由于

1 个答案:

答案 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,>