python 存储变量的几种方法(推荐)

2022-11-24 21:59:12
目录
1. numpy 自带方法2. pandas 自带方法3. sklearn 的自带方法4. pickle 库操作cannot import name joblib from sklearn.externals

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

      经测试,保存的文件大小与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.>

      ☀☀☀<<举例>>☀☀☀

      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>

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

      到此这篇关于python 存储变量的几种方法的文章就介绍到这了,更多相关python 存储变量内容请搜索易采站长站以前的文章或继续浏览下面的相关文章希望大家以后多多支持易采站长站!