Python Numpy 数据读写

发布时间 2023-12-12 22:12:10作者: leviliang

1、二进制文件读写

NumPy提供了几种处理二进制文件的方法,允许高效地读写大型数组数据。方法如下,

1)保存数组到二进制文件

numpy.save(file, arr, allow_pickle=True, fix_imports=True): 将数组保存到以.npy扩展名的二进制文件中。file是文件路径或类似文件的对象,arr是要保存的数组。

使用示例:Python Numpy 数据读写

2)加载二进制文件的数组

numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII'): 从.npy.npz文件中加载数组。file可以是文件路径、URL或类似文件的对象。

使用示例:Python Numpy 数据读写

3)保存多个数组到一个文件

numpy.savez(file, *args, **kwds): 以未压缩的.npz格式保存多个数组。可以通过关键字参数为数组命名。

numpy.savez_compressed(file, *args, **kwds): 功能同numpy.savez,但以压缩格式保存。

使用示例:Python Numpy 数据读写

4)读取多个数组

numpy.savez:将多个数组保存到一个以 .npz 格式的压缩文件中。使用numpy.load 并从 .npz 文件中提取数组。

使用示例:Python Numpy 数据读写

2、文本文件读写

loadtxt函数用于从文本文件中读取 NumPy 数组。savetxt 函数用于将 NumPy 数组保存到文本文件中。

1)写入文本文件

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# '): 将数组写入文本文件。fname是文件名或文件对象,X是要保存的数组,fmt是格式化字符串,delimiter指定列与列之间的分隔符。

使用示例:Python Numpy 数据读写

2)读取文本文件

numpy.loadtxt(fname, dtype=float, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0): 从文本文件中加载数据。fname可以是文件名或文件对象,dtype指定数组数据类型。

使用示例:Python Numpy 数据读写

3、高级文件操作

umpy.genfromtxt:从文本文件中加载数据,并处理缺失值。适用于加载复杂或不规则的数据集。

numpy.genfromtxt(fname, dtype=float, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=None, replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding='bytes')

参数说明:

参数

说明

fname

要读取的文件、文件名或生成器。

dtype

数据类型,默认为float。

comments

注释字符,默认为'#'。

delimiter

分隔符,默认为任何空格。

skip_header

跳过文件开头的行数,默认为0。

skip_footer

跳过文件末尾的行数,默认为0。

converters

将数据列转换为特定类型的函数的字典。

missing_values

指定缺失数据的规则。

filling_values

用于替代缺失值的值。

usecols

指定需要读取哪些列的整数或整数序列。

names

设置为True时将第一行作为列名,或提供字符串列表作为列名。

excludelist

指定需要排除的列名列表。

deletechars

删除字段名中的特定字符。

replace_space

用于替换字段名中的空格字符。

autostrip

是否自动去除字段值前后的空格。

case_sensitive

指定字段名的大小写敏感性。

defaultfmt

当没有指定列名时,用于自动生成列名的格式。

unpack

如果为True,返回的数组将被转置,即行变为列。

usemask

如果为True,返回一个掩码数组。

loose

如果为True,则会宽松解析非形式化的数字字符串。

invalid_raise

如果为True,对于不符合规定的行将引发异常。

max_rows

读取的最大行数。

encoding

指定文件编码。

使用示例:Python Numpy 数据读写

注意:

在使用 numpy.save 和 numpy.savetxt 时,如果不指定扩展名,NumPy 会自动添加 .npy 或 .txt.npy 格式是一种二进制格式,具有高效存储和快速加载的优势,同时保持数组的数据类型和形状信息。