Numpy读写文件

NumPy读写文件

  • 读写bin文件
  • 读写npy/npz文件
  • 读写txt/csv文件

读写bin文件

  • ndarray.tofile(fid, sep="", format="%s")

    • 将数组作为txt或bin(默认)写入文件, 不保存数组形状和元素类型
    • fid: 文件对象/文件名
    • sep: 分隔符
    • format: 格式化字符串
  • ndarray.fromfile(file, dtype=float, count=-1, sep=’’, offset=0)

    • 读取数据时,需要指定元素类型和数组形状
    • file: 文件对象/文件名
    • dtype: 数据类型. 需要指定对应的元素类型,否则数据错误
    • count: 读取的项目数 -1 表示所有
    • sep: 分隔符.’'表示文件应被视为二进制文件, 以空格作为分隔符, 至少需要匹配一个空格
    • offset: 偏移量.以字节为单位, 默认是0, 仅允许用于二进制文件
import numpy as np
a = np.arange(12).reshape(3, 4)array([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])
# 保存为bin文件
a.tofile('test.bin')# 读取bin文件, 不指定类型 数据错误
np.fromfile('test.bin')array([2.12199579e-314, 6.36598737e-314, 1.06099790e-313, 1.48539705e-313,1.90979621e-313, 2.33419537e-313])# 指定正确的类型 和 形状
b = np.fromfile('test.bin', dtype=np.int32).reshape(3,4)array([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])

读写npy/npz文件

npy是NumPy专用的二进制格式, 保存了array的形状和类型信息

npz是包含多个array的压缩格式

  • np.save(filearrallow_pickle = Truefix_imports = True )
    • 将一个array保存为npy文件
    • file: 文件对象/文件名
    • arr: 要保存的array
    • allow_pickle: 允许使用Python pickles 保存数组. 默认是True
    • fix_imports: 修复导入.默认为True
  • np.savez(filearr*args**kwargs )
    • 如果传入的参数没有关键字,.npz文件中相应的变量名为“arr_0”、“arr_1”等。如果给定关键字参数,.npz文件中相应的变量名将与关键字名匹配。
    • file: npz 文件
    • args
    • kwargs
  • np.load(file, mmap_mode=None**,** allow_pickle=False**,** fix_imports=True**,** encoding='ASCII’)
    • 从npy、npz或pickled文件加载数组或pickled对象。
import numpy as np
a = np.arange(12).reshape(3, 4)
array([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])
# 保存为npy
np.save('test.npy', a)# 读取npy
c = np.load('test.npy')# 保存为npz
d = np.arange(9).reshape(3,3)
np.savez('test.npz')# 读取npz
e = np.load('test.npz')
# 文件名
e.files
['arr_0', 'arr_1']# 指定文件名
np.savez('test.npz', a=a, d=d)
f = np.load('test.npz')
f.files
['a', 'd']f['a']
array([[ 0,  1,  2,  3],[ 4,  5,  6,  7],[ 8,  9, 10, 11]])f['d']
array([[0, 1, 2],[3, 4, 5],[6, 7, 8]])

读写txt/csv文件

  • np.savetxt(fname,X, fmt=’%.18e’,delimiter=’ ',newline=’\n’, header=’’, footer=’’,comments=’#’,encoding=None)
    • 将数组保存为文本文件
    • fname:文件对象或者文件名
    • X:要保存的数组array
    • fmt:格式化
    • delimiter:分隔符
    • newline:换行符
    • header:文件头
    • footer: 页脚
    • comments:注释
    • encoding: 编码
  • np.loadtxt(fname, dtype=float, comments=’#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=‘bytes’, max_rows=None, *, like=None)
    • 读取文本文件
    • fname:文件对象或者文件名 .gz/.bz2会自动解压
    • dtype: 数据类型
    • comments:注释
    • delimiter:分隔符
    • converters:转换器. 如果第0列是日期字符. converters={0:datestr2num}
    • skiprows:跳过第几行, 默认是0, 读取所有行
    • usecols: 读取第几列, 默认为None. 读取所有列
    • unpack:解包, True时, 可自动解包x,y,z=loadtxt(file)
    • ndmin: 最小维度
    • encoding: 编码
    • max_rows: 最大行数. 读取skiprows后的最大行数
import numpy as np
a = np.arange(12)
np.savetxt('test.txt', a, fmt='%.4f')f = np.loadtxt('test.txt')


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部