• Numpy数据存取


    Numpy数据存取
    numpy提供了便捷的内部文件存取,将数据存为np专用的npy(二进制格式)或npz(压缩打包格式)格式
    npy格式以二进制存储数据的,在二进制文件第一行以文本形式保存了数据的元信息(维度,数据类型),可以用二进制工具查看查看内容
    npz文件以压缩打包文件存储,可以用压缩软件解压
    import numpy as np
    
    a = np.array([['张三','李四','王五','赵六'],['11','12','13','14','15']])
    b = a = np.arange(24).reshape((2,3,4))
    
    np.save('x.npy',a) # 存为.npy文件
    np.savez("y.npz", ar0 = a, ar1 = b) # 多个数组存入一个.npz压缩包
    
    c = np.load('x.npy') # .npy文件读入数组
    c
    
    d = np.load("y.npz") # .npz压缩包读入
    d["ar0"] # 单独输出数组

    CSV文件存取

    Comma-Separated Value,逗号分隔值文件

    一种数据存储格式

    • 广泛支持
    • 类表格
    • 存储一维或二维数据
    • 文本格式

    CSV文件:

    • 显示:表格状态
    • 源文件:换行和逗号分隔行列的格式化文本

    Numpy存储CSV文件

    将ndarray数组写入CSV文件中

    np.savetxt(frame,array,fmt='%.18e',delimiter=None)

    • frame 存储文件、字符串或产生器的名字,可以是.gz或.bz2的压缩文件,对大型数据有用,压缩后存储或读取,节省存储资源
    • array 存入文件的数组
    • fmt 写入文件中每个元素的字符串格式,例如
      • %s (ASCII字符)
      • %d (整数)
      • %.2f(2位小数的浮点数)
      • %.18e(科学计数法,常用)
        • np各类型元素存储到CSV中都是字符串,字符串显示的格式,默认%.18e,科学计数法,保留18位小数的浮点数形式存储数据,需要根据情况修改
    • delimiter 分隔字符串,默认是任何空格,需要改为 逗号

    np的savetxt函数并不是专为生成csv文件用的,它可以生成任何带特定分隔字符的文本文件,但csv文件使用广泛,所以我们一般用此函数只生成csv

    import numpy as np
    
    a = np.arange(100).reshape(5,20)
    np.savetxt('a.csv',a,fmt='%d',delimiter=',') #整数
    np.savetxt('a.csv',a,fmt='%.1f',delimiter=',') #一位小数的浮点数
    
    b = np.array([['a','b','c','d'],['11','12','13','14']])
    np.savetxt('b.csv',b,fmt='%s',delimiter=',') #ASCII字符,不能存储非ASCII字符串

    csv文件只能存储一维、二维数据,不能存储多维数据

    import numpy as np
    
    a = np.arange(24).reshape((2,12))
    # a = np.arange(24).reshape((2,3,4)) # 存储多维数据出错
    a
    np.savetxt('y.csv',a,fmt='%d',delimiter=',')

    Numpy读取CSV文件

    将CSV文件数据读入ndarray数组

    np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)

    • frame 文件、字符串或产生器,可以是.gz或bz2压缩文件
    • dtype 数据类型,可选,csv的字符串以什么数据类型读入数组中,默认np.float 浮点数
    • delimiter 分隔字符串,默认是任何空格,改为 逗号
    • skiprows 跳过前x行,一般跳过第一行表头
    • usecols 读取指定的列,索引,元组类型
    • unpack 如果True,读入属性将分别写入不同数组变量,False 读入数据只写入一个数组变量,默认False
    import numpy as np
    
    b = np.loadtxt('a.csv', delimiter=',') # 默认浮点型
    b = np.loadtxt('a.csv', dtype=np.int, delimiter=',') #数据为整型
    
    #b = np.loadtxt('a.txt', dtype=np.str, delimiter=',') #数据为字符串,输出默认带 b,要去掉用下面方式输出:
    b = np.loadtxt('a.txt', dtype=bytes, delimiter=',').astype(str)
    b = np.loadtxt('a.txt', dtype=bytes, delimiter=',',skiprows=1,usecols=(2,3)).astype(str) #跳过第一行,读入第3、4列
    
    b
  • 相关阅读:
    【转载】Python正则表达式指南
    Redis4.0模块子系统实现简述
    Redis4.0 主从复制(PSYN2.0)
    13种细分类型的TCP重传小结(一张表总结4.4内核所有TCP重传场景)
    TCP/IP Illustrated Vol1 Second Edition即英文版第二版,TCP部分个人勘误
    TCP源码—epoll源码及测试
    TCP系列55—拥塞控制—18、其他拥塞控制算法及相关内容概述
    TCP系列54—拥塞控制—17、AQM及ECN
    TCP系列53—拥塞控制—16、Destination Metrics和Congestion Manager
    TCP系列52—拥塞控制—15、前向重传与RACK重传拥塞控制处理对比
  • 原文地址:https://www.cnblogs.com/yoyo1216/p/10131582.html
Copyright © 2020-2023  润新知