阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单介绍python 存储变量的几种方法

73次阅读
没有评论

共计 1850 个字符,预计需要花费 5 分钟才能阅读完成。

导读 这篇文章主要介绍了 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

    阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

    腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

    代金券:在阿里云专用满减优惠券

    正文完
    星哥玩云-微信公众号
    post-qrcode
     0
    星锅
    版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1850字。
    转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
    【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
    阿里云-最新活动爆款每日限量供应
    评论(没有评论)
    验证码
    【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中