Numpy读写文件

读写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')
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值