zoukankan      html  css  js  c++  java
  • save、savez、savetxt

    https://blog.csdn.net/sherrylml/article/details/51494052

    Numpy能够读写磁盘上的文本数据或二进制数据。

    将数组以二进制格式保存到磁盘

    1、np.load和np.save是读写磁盘数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

    >>> import numpy as np
    A = np.arange(15).reshape(3,5)
    >>> A
    array([[ 0, 1, 2, 3, 4],
    [ 5, 6, 7, 8, 9],
    [10, 11, 12, 13, 14]])
    >>> np.save("A.npy",A) #如果文件路径末尾没有扩展名.npy,该扩展名会被自动加上。
    >>> B=np.load("A.npy")
    >>> B
    array([[ 0, 1, 2, 3, 4],
    [ 5, 6, 7, 8, 9],
    [10, 11, 12, 13, 14]])

    2、np.savez

    如果你想将多个数组保存到一个文件中的话,可以使用numpy.savez函数。savez函数的第一个参数是文件名,其后的参数都是需要保存的数组,也可以使用关键字参数为数组起一个名字,非关键字参数传递的数组会自动起名为arr_0, arr_1, …。savez函数输出的是一个压缩文件(扩展名为npz),其中每个文件都是一个save函数保存的npy文件,文件名对应于数组名。load函数自动识别npz文件,并且返回一个类似于字典的对象,可以通过数组名作为关键字获取数组的内容:

    >>> C=np.array([1,0,1,0])
    >>> np.savez("files.npz",A,B,C_array=C)
    >>> D=np.load("files.npz")
    >>> D['arr_0']
    array([[ 0, 1, 2, 3, 4],
    [ 5, 6, 7, 8, 9],
    [10, 11, 12, 13, 14]])
    >>> D['arr_1']
    array([[ 0, 1, 2, 3, 4],
    [ 5, 6, 7, 8, 9],
    [10, 11, 12, 13, 14]])
    >>> D['arr_2']
    Traceback (most recent call last):
    File "<input>", line 1, in <module>
    File "D:Python3libsite-packages umpylib pyio.py", line 255, in __getitem__
    raise KeyError("%s is not a file in the archive" % key)
    KeyError: 'arr_2 is not a file in the archive'
    >>> D['C_array']
    array([1, 0, 1, 0])

    如果你用解压软件打开files.npz文件的话,会发现其中有三个文件:arr_0.npy, arr_1.npy, C_array.npy,其中分别保存着数组A,B,C的内容。

    3、

    存取文本文件

    np.loadtxt和np.savetxt可以读写1维和2维的数组:
    同时可以指定各种分隔符、针对特定列的转换器函数、需要跳过的行数等。

    np.loadtxt(FILENAME, dtype=int, delimiter=' ')
    np.savetxt("a.txt", a, fmt="%d", delimiter=",")

    >>> a=np.arange(0,10).reshape(2,-1)
    >>> a
    array([[0, 1, 2, 3, 4],
    [5, 6, 7, 8, 9]])
    >>> np.savetxt("a.txt",a) #缺省按照'%.18e'格式保存数据,以空格分隔
    >>> np.loadtxt("a.txt")
    array([[ 0., 1., 2., 3., 4.],
    [ 5., 6., 7., 8., 9.]])

    >>> a=np.arange(0,10,0.5).reshape(4,-1)
    >>> a
    array([[ 0. , 0.5, 1. , 1.5, 2. ],
    [ 2.5, 3. , 3.5, 4. , 4.5],
    [ 5. , 5.5, 6. , 6.5, 7. ],
    [ 7.5, 8. , 8.5, 9. , 9.5]])
    >>> np.savetxt("a.txt",a,fmt="%d",delimiter=",")#改为保存为整数,以逗号分隔
    >>> np.loadtxt("a.txt",delimiter=",")#load时也要指定为逗号分隔
    array([[ 0., 0., 1., 1., 2.],
    [ 2., 3., 3., 4., 4.],
    [ 5., 5., 6., 6., 7.],
    [ 7., 8., 8., 9., 9.]])

  • 相关阅读:
    Hbase flusher源码解析(flush全代码流程解析)
    HBase行锁原理及实现
    Hbase源码之 compact源码(二)
    hbase源码之 compact源码(一)
    手动下载jar包导入mvn repo的方法
    JAVA Api 调用Hbase报错锦集
    Hbase Filter之PrefixFilter
    Hbase Filter之FilterList
    windows环境中hbase源码编译遇到的问题
    Hbase put写入源码分析
  • 原文地址:https://www.cnblogs.com/liujianing/p/13612160.html
Copyright © 2011-2022 走看看