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

Crq
Crq
管理员
1861
文章
0
粉丝
Linux教程评论7字数 496阅读1分39秒阅读模式
摘要这篇文章主要介绍了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

    weinxin
    我的微信
    微信号已复制
    我的微信
    这是我的微信扫一扫
     
    Crq
    • 本文由 Crq 发表于2025年3月12日 15:36:49
    • 转载请注明:https://www.cncrq.com/13418.html
    redis和memcached的区别 Linux教程

    redis和memcached的区别

    Redis 和 Memcache 都是基于内存的数据存储系统。Memcached是高性能分布式内存缓存服务;Redis是一个开源的key-value存储系统。与Memcached类...
    I/O复用机制概述 Linux教程

    I/O复用机制概述

    I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个客户端请求。与传统的多线程/多进程模型比,I/O多路复用的最大...
    匿名

    发表评论

    匿名网友
    :?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
    确定

    拖动滑块以完成验证