Numpy---数组的存储和加载

时间:2019-12-27
本文章向大家介绍Numpy---数组的存储和加载,主要包括Numpy---数组的存储和加载使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

一、二进制

1.numpy.save()

numpy.save(file, arr, allow_pickle=True, fix_imports=True)

功能:将数组以二进制的形式存储到文件中

参数:

  1. file文件名或者文件对象。如果是个文件名,则会自动添加后缀.npy如果没有该后缀的话
  2. arr被存储的数组
  3. allow_pickle一个布尔值,如果为True,则使用Python pickle。有时候为了安全性和可移植性而不使用pickle
  4. fix_imports用于python3的数组importpython2的情形

2.numpy.savez()

numpy.savez(file, *args, **kwds)

功能:将多个数组以二进制的形式存储到文件中。

参数:

  1. file文件名或者文件对象。如果是个文件名,则会自动添加后缀.npz如果没有该后缀的话

  2. args被存储的数组。这些数组的名字将被自动命名为arr_0/arr_1/...;

    1. 如果没有名字,则完全无法知晓这些数组的区别

  3. kwds将被存储的数组,这些关键字参数就是键的名字

3.numpy.load()

numpy.load(file, mmap_mode=None, allow_pickle=True, fix_imports=True, encoding='ASCII')

功能:将二进制文件中读取数组

参数:

  1. file一个文件名或者文件对象。它存放着数组
  2. mmap_mode如果不是None,则memory-map该文件。此时对数组的修改会同步到文件上。当读取大文件的一小部分时很有用,因为它不必一次读取整个文件。可选值为None/'r+'/'r'/'w+'/'c'
  3. allow_pickle一个布尔值,如果为True,则使用Python pickle。有时候为了安全性和可移植性而不使用pickle
  4. fix_imports用于python3的数组importpython2的情形
  5. 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()函数只能处理数据无缺失的情况。

参数:

  1. fname指定的数据源。可以为:

    1. 文件名字符串。如果后缀为gz或者bz2,则首先自动解压缩
    2. 文件对象/字符串列表/其他可迭代对象:这些可迭代对象必须返回字符串(该字符串被视为一行)
  2. dtype数组的元素类型,可以提供一个序列,指定每列的数据类型

  3. comments一个字符串,其中每个字符都指定了注释行的第一个字符。注释行整体被放弃

  4. delimiter指定了分隔符。可以为:

    1. 字符串:指定分隔符。默认情况下,所有连续的空白符被认为是分隔符
    2. 一个整数:指定了每个字段的宽度
    3. 一个整数序列:依次给出了各个字段的宽度
  5. skiprows被废弃,推荐使用skip_header

  6. skip_header一个整数,指定跳过文件头部多少行

  7. skip_footer一个整数,指定跳过文件尾部多少行

  8. converters用于列数据的格式转换。你可以指定一个字典,字典的键就是列号:

    • converters={0: lambda s: float(s or 0), 1: lambda s: int(s or 199),... }  
  9. missing被废弃,推荐使用missing_values

  10. missing_values:指定缺失数据。你可以自定一个字典,字典的键就是缺失位置的字符串,值就是缺失值。比如你可以指定NNNN为缺失数据,此时遇到NNNN时,numpy解析为np.nan

  11. filling_values指定缺失值的填充值。即解析到np.nan时,用什么值代替它

  12. usecols一个序列,指定了要读取那些列(列从0 计数)

  13. names

    1. 如果为True,则在skip_header行之后第一行被视作标题行,将从该行读取每个字段的name
    2. 如果为序列或者一个以冒号分隔的字符串,则使用它作为各个字段的name
    3. 如果为None,则每个dtype字段的名字被使用
  14. excludelist一个序列,给出了需要排除的字段的name

  15. deletecharsA string combining invalid characters that must be deleted from the names

  16. defaultfmtA format used to define default field names, such as “f%i” or “f_%02i”.

  17. autostrip一个布尔值。如果为True,则自动移除数据中的空白符

  18. replace_space一个字符。如果变量名中有空白符,如user name,则使用该字符来替代空白符。默认为_,即变量名转换为user_name

  19. case_sensitive一个布尔值或者字符串。如果为True,则字段名是大小写敏感的。如果为False或者'upper',则字段名转换为大写字符。如果为'lower'则转换为小写字符。

  20. unpack:If True, the returned array is transposed

  21. usemask:If True, return a masked array

  22. loose:If True, do not raise errors for invalid values

  23. 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

  24. 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相同,但是它只能用于规则比较简单的文件,并且它的解析速度更快。

参数:

  1. ndim一个整数。指定结果数组必须拥有不少于ndim维度。
  2. 其他参数参考genfromtxt

3.numpy.fromstring()

numpy.fromstring(string, dtype=float, count=-1, sep='')

功能:raw binary或者字符串中创建一维数组。

参数:

  1. string一个字符串,给出数据源
  2. dtype指定数据类型
  3. count一个整数。从数据源(一个字符串)中读取指定数量的数值类型的数值。如果为负数,则为数据长度加上这个负值
  4. sep如果未提供或者为空字符串,则string被认为是二进制数据。如果提供了一个非空字符串,则给出了分隔符。

4.numpy.savetxt()

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='',footer='', comments='# ')

功能:存储到文本文件

参数:

  1. fname给出了文件名或者file对象。如果为.gz后缀,则自动压缩

  2. X被存储的数组

  3. fmt一个字符串或者一个字符串序列,指定存储格式。一个字符串可以指定所有的格式化方式;一个字符串序列可以对每列指定一个格式化方式。如果是虚数,你可以通过%.4e%+.4j的方式指定实部和虚部。

  4. delimiter一个字符串,用于分隔符,分隔每个列

  5. newline一个字符串,指定换行符

  6. header一个字符串。它会写到文件的首行

  7. footer一个字符串。它会写到文件的末尾

  8. comments一个字符串。它会写到文件的中间,并且用注释符作为行首,如#

  9. 注:fmt分隔字符串的格式为%[flag]width[.precision]specifier。其中:
  10. flags可以为'-'(左对齐)、'+'(右对齐)、'0'(左侧填充0)

  11. width最小的位宽。

  12. precision

    1. 对于specifier=d/i/o/x,指定最少的数字个数
    2. 对于specifier=e/E/f,指定小数点后多少位
    3. 对于specifier=g/G,指定最大的significant digits
    4. 对于specifier=s,指定最大的字符数量
  13. 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")

功能:保存到文件中

参数:

  1. fid一个file对象或者文件名
  2. sep一个字符串,指定分隔符。如果为空或者空字符串,则按照二进制的方式写入,等价于file.write(a.tobytes())
  3. format一个字符串,指定了数值的格式化方式

原文地址:https://www.cnblogs.com/nxf-rabbit75/p/12107799.html