共计 1850 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 这篇文章主要介绍了 python 存储变量的几种方法, 包括 numpy 自带方法,pandas 自带方法,sklearn 的自带方法和 pickle 库操作方法,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下 |
1. numpy 自带方法
>
>>> import numpy as np | |
>>> a = np.arange(24).reshape(2,3,4) | |
>>> a | |
array([[[0, 1, 2, 3], | |
[4, 5, 6, 7], | |
[8, 9, 10, 11]], | |
[[12, 13, 14, 15], | |
[16, 17, 18, 19], | |
[20, 21, 22, 23]]]) | |
>>> np.save("D:/aa/npp.npy", a) | |
>>> b = np.load("D:/aa/npp.npy") | |
>>> b | |
array([[[0, 1, 2, 3], | |
[4, 5, 6, 7], | |
[8, 9, 10, 11]], | |
[[12, 13, 14, 15], | |
[16, 17, 18, 19], | |
[20, 21, 22, 23]]]) |
如果报错 Object arrays cannot be loaded when allow_pickle=False,需要改为如下:
np.load(path, allow_pickle=True)
2. pandas 自带方法
>
import pandas as pd | |
import numpy as np | |
df = pd.DataFrame(np.arange(12).reshape(3, 4)) | |
df | |
0 1 2 3 | |
0 0 1 2 3 | |
1 4 5 6 7 | |
2 8 9 10 11 | |
df.columns = ['I', 'II', 'III', 'IV'] | |
df | |
I II III IV | |
0 0 1 2 3 | |
1 4 5 6 7 | |
2 8 9 10 11 | |
df.to_pickle(r"D:/aa/df") | |
dff = pd.read_pickle(r"D:/aa/df") | |
dff | |
I II III IV | |
0 0 1 2 3 | |
1 4 5 6 7 | |
2 8 9 10 11 |
3. sklearn 的自带方法
经测试,保存的文件大小与 numpy.save() 方法一致。
>
注意:新版 sklearn 会报错,直接 import joblib 即可
参考:(注意下面评论)cannot import name joblib from sklearn.externals(文末见)
from sklearn.externals import joblib | |
# 保存 x | |
joblib.dump(x, 'x.pkl') | |
# 加载 x | |
x = joblib.load('x.pkl') |
新版实现方法
import joblib | |
# 保存 x | |
joblib.dump(x, 'x.pkl') | |
# 加载 x | |
x = joblib.load('x.pkl') |
4. pickle 库操作
>
import pickle | |
# 存储变量的文件的名字 | |
filename = 'shoplist.data' | |
# 初始化变量 | |
shoplist = ['apple', 'mango', 'carrot'] | |
# 以二进制写模式打开目标文件 | |
f = open(filename, 'wb') | |
# 将变量存储到目标文件中区 | |
pickle.dump(shoplist, f) | |
# 关闭文件 | |
f.close() | |
# 删除变量 | |
del shoplist | |
# 以二进制读模式打开目标文件 | |
f = open(filename, 'rb') | |
# 将文件中的变量加载到当前工作区 | |
storedlist = pickle.load(f) | |
print(storedlist) |
cannot import name joblib from sklearn.externals
使用 scikit-learn 跑一个两年前的案例, 报错:cannot import name‘joblib’from‘sklearn.externals’
原因: scikit-learn 版本太新了,
解决方法一:直接使用 import joblib
解决方法二:回退版本
删除当前版本的 scikit-learn pip uninstall scikit-learn
安装旧版本的 scikit-learn pip install scikit-learn==0.20.3
正文完
星哥玩云-微信公众号
