Numpy---4.数组的存储和加载
一、二进制
1.numpy.save()
numpy.save(file, arr, allow_pickle=True, fix_imports=True)
功能:将数组以二进制的形式存储到文件中
参数:
file:文件名或者文件对象。如果是个文件名,则会自动添加后缀.npy如果没有该后缀的话arr:被存储的数组allow_pickle:一个布尔值,如果为True,则使用Python pickle。有时候为了安全性和可移植性而不使用picklefix_imports:用于python3的数组import到python2的情形
2.numpy.savez()
numpy.savez(file, *args, **kwds)
功能:将多个数组以二进制的形式存储到文件中。
参数:
-
file:文件名或者文件对象。如果是个文件名,则会自动添加后缀.npz如果没有该后缀的话 -
args:被存储的数组。这些数组的名字将被自动命名为arr_0/arr_1/...;-
如果没有名字,则完全无法知晓这些数组的区别
-
-
kwds:将被存储的数组,这些关键字参数就是键的名字
3.numpy.load()
numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')
功能:将二进制文件中读取数组
参数:
file:一个文件名或者文件对象。它存放着数组mmap_mode:如果不是None,则memory-map该文件。此时对数组的修改会同步到文件上。当读取大文件的一小部分时很有用,因为它不必一次读取整个文件。可选值为None/'r+'/'r'/'w+'/'c'allow_pickle:一个布尔值,如果为True,则使用Python pickle。有时候为了安全性和可移植性而不使用picklefix_imports:用于python3的数组import到python2的情形encoding:只用于python2,读取python2字符串。
该函数返回一个数组,元组,或者字典(当二进制文件时savez生成时)
二、文本文件
1.numpy.genfromtxt()
numpy.genfromtxt(fname, dtype=<type '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)
功能 :从文本文件中加载数组,通用性很强,可以处理缺失数据的情况。
loadtxt()函数只能处理数据无缺失的情况。
参数:
-
fname:指定的数据源。可以为:- 文件名字符串。如果后缀为
gz或者bz2,则首先自动解压缩 - 文件对象/字符串列表/其他可迭代对象:这些可迭代对象必须返回字符串(该字符串被视为一行)
- 文件名字符串。如果后缀为
-
dtype:数组的元素类型,可以提供一个序列,指定每列的数据类型 -
comments:一个字符串,其中每个字符都指定了注释行的第一个字符。注释行整体被放弃 -
delimiter:指定了分隔符。可以为:- 字符串:指定分隔符。默认情况下,所有连续的空白符被认为是分隔符
- 一个整数:指定了每个字段的宽度
- 一个整数序列:依次给出了各个字段的宽度
-
skiprows:被废弃,推荐使用skip_header -
skip_header:一个整数,指定跳过文件头部多少行 -
skip_footer:一个整数,指定跳过文件尾部多少行 -
converters:用于列数据的格式转换。你可以指定一个字典,字典的键就是列号:- converters={0: lambda s: float(s or 0), 1: lambda s: int(s or 199),... }
-
missing:被废弃,推荐使用missing_values -
missing_values:指定缺失数据。你可以自定一个字典,字典的键就是缺失位置的字符串,值就是缺失值。比如你可以指定NNNN为缺失数据,此时遇到NNNN时,numpy解析为np.nan -
filling_values:指定缺失值的填充值。即解析到np.nan时,用什么值代替它 -
usecols:一个序列,指定了要读取那些列(列从0 计数) -
names:- 如果为
True,则在skip_header行之后第一行被视作标题行,将从该行读取每个字段的name。 - 如果为序列或者一个以冒号分隔的字符串,则使用它作为各个字段的
name - 如果为
None,则每个dtype字段的名字被使用
- 如果为
-
excludelist:一个序列,给出了需要排除的字段的name。 -
deletechars:A string combining invalid characters that must be deleted from the names -
defaultfmt:A format used to define default field names, such as “f%i” or “f_%02i”. -
autostrip:一个布尔值。如果为True,则自动移除数据中的空白符 -
replace_space:一个字符。如果变量名中有空白符,如user name,则使用该字符来替代空白符。默认为_,即变量名转换为user_name -
case_sensitive:一个布尔值或者字符串。如果为True,则字段名是大小写敏感的。如果为False或者'upper',则字段名转换为大写字符。如果为'lower'则转换为小写字符。 -
unpack:If True, the returned array is transposed -
usemask:If True, return a masked array -
loose:If True, do not raise errors for invalid values -
invalid_raise:If True, an exception is raised if an inconsistency is detected in the number of columns. If False, a warning is emitted and the offending lines are skipped -
max_rows:一个整数,指定读取的最大行数。
2.numpy.loadtxt()
numpy.loadtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None,converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)
功能:作用与genfromtxt相同,但是它只能用于规则比较简单的文件,并且它的解析速度更快。
参数:
ndim:一个整数。指定结果数组必须拥有不少于ndim维度。- 其他参数参考
genfromtxt
3.numpy.fromstring()
numpy.fromstring(string, dtype=float, count=-1, sep='')
功能:从raw binary或者字符串中创建一维数组。
参数:
string:一个字符串,给出数据源dtype:指定数据类型count:一个整数。从数据源(一个字符串)中读取指定数量的数值类型的数值。如果为负数,则为数据长度加上这个负值sep:如果未提供或者为空字符串,则string被认为是二进制数据。如果提供了一个非空字符串,则给出了分隔符。
4.numpy.savetxt()
numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='',footer='', comments='# ')
功能:存储到文本文件
参数:
-
fname:给出了文件名或者file对象。如果为.gz后缀,则自动压缩 -
X:被存储的数组 -
fmt:一个字符串或者一个字符串序列,指定存储格式。一个字符串可以指定所有的格式化方式;一个字符串序列可以对每列指定一个格式化方式。如果是虚数,你可以通过%.4e%+.4j的方式指定实部和虚部。 -
delimiter:一个字符串,用于分隔符,分隔每个列 -
newline:一个字符串,指定换行符 -
header:一个字符串。它会写到文件的首行 -
footer:一个字符串。它会写到文件的末尾 -
comments:一个字符串。它会写到文件的中间,并且用注释符作为行首,如# - 注:
fmt分隔字符串的格式为%[flag]width[.precision]specifier。其中: -
flags:可以为'-'(左对齐)、'+'(右对齐)、'0'(左侧填充0) -
width:最小的位宽。 -
precision:- 对于
specifier=d/i/o/x,指定最少的数字个数 - 对于
specifier=e/E/f,指定小数点后多少位 - 对于
specifier=g/G,指定最大的significant digits - 对于
specifier=s,指定最大的字符数量
- 对于
-
specifier:指定格式化类型。c(字符)、d/i(带符号整数)、e/E(科学计数法)、f(浮点数)、g/G(使用shorter e/E/f)、o(带符号八进制)、s(字符串)、u(无符号整数)、x/X(无符号十六进制)
5.ndarray.tofile()
ndarray.tofile(fid, sep="", format="%s")
功能:保存到文件中
参数:
fid:一个file对象或者文件名sep:一个字符串,指定分隔符。如果为空或者空字符串,则按照二进制的方式写入,等价于file.write(a.tobytes())format:一个字符串,指定了数值的格式化方式
浙公网安备 33010602011771号