导读 这篇文章主要介绍了python 存储变量的几种方法,包括numpy 自带方法,pandas 自带方法,sklearn 的自带方法和pickle 库操作方法,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
1. numpy 自带方法
  • numpy.save():数组会以未压缩的原始二进制格式保存在扩展名为. npy 的文件中。
  • numpy.load():读取 .npy 文件的数据,直接转换为 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 自带方法
  • to_pickle:此方法是将 dataframe 变量数据直接存储为本地文件,对于文件扩展名没有要求
  • read_pickle:此方法是将本地存储的变量读取并转为 dataframe 文件
  • <<举例>>

    >>> 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

    原文来自:https://www.jb51.net/article/268282.htm

    本文地址:https://www.linuxprobe.com/python-much-linux.html编辑:xiangping wu,审核员:逄增宝

    Linux命令大全:https://www.linuxcool.com/

    Linux系统大全:https://www.linuxdown.com/

    红帽认证RHCE考试心得:https://www.rhce.net/