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

摘要:
有时候为了安全性和可移植性而不使用picklefix_imports:用于python3的数组import到python2的情形2.numpy.savez()numpy.savez功能:将多个数组以二进制的形式存储到文件中。比如你可以指定NNNN为缺失数据,此时遇到NNNN时,numpy解析为np.nanfilling_values:指定缺失值的填充值。如果为True,则字段名是大小写敏感的。指定结果数组必须拥有不少于ndim维度。
一、二进制

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='
', 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一个字符串,指定了数值的格式化方式

免责声明:文章转载自《Numpy---4.数组的存储和加载》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Android】Android中线程的应用js和jq获取父,兄弟,子节点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

hash表的理解

哈希表 先从数组说起 任何一个程序员,基本上对数组都不会陌生,这个最常用的数据结构,说到它的优点,最明显的就是两点: 简单易用,数组的简易操作甚至让大多数程序员依赖上了它,在资源富足的情况下,我们甚至会无意识地忽略其它更适用的数据结构而使用数组(别说你没这么干过..)。 查找的快速性,数组中查找元素可以直接通过下标进行定位,速度快。 我在刚开始写程序...

PCRE函数简介和使用示例

PCRE是一个NFA正则引擎,不然不能提供完全与Perl一致的正则语法功能。但它同时也实现了DFA,只是满足数学意义上的正则。 PCRE提供了19个接口函数,为了简单介绍,使用PCRE内带的测试程序(pcretest.c)示例用法。 pcre_compile原型:#include <pcre.h>pcre *pcre_compile(cons...

JSON简述

JSON(JavaScript Object Notation) JavaScript 对象表示法,是一种轻量级的数据交换格式。类似于XML。 基础结构 JSON基于两种结构(即由两种结构组成:对象(键值对集合)和数组): “名称/值”对的集合(A collection of name/value pairs)对象。不同的编程语言中,它被理解为对象(ob...

Ansi,UTF8,Unicode编码(续)

1.三种编码的回顾 Ansi字符串我们最熟悉,英文占一个字节,汉字2个字节,以一个\0结尾,常用于txt文本文件。 Unicode字符串,每个字符(汉字、英文字母)都占2个字节;在VC++的世界里,Microsoft比较鼓励使用Unicode,如wchar_t。 UTF8是Unicode一种压缩形式,英文A在unicode中表示为0x0041,英语中这种存...

二维码(QR code)基本知识

1.二维码定义:   二维码(2-Dimensional Bar Code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。它是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、...

Pandas —— (1)基础数据结构概念和创建

@ 目录 一、Pandas简介 1.1 数据结构 1.2 大小可变与数据复制 二、Series 数据结构 2.1 Series简介 2.2 Series 创建方法 2.2.1 由字典创建 2.2.2 由数组创建(一维数组) 三、Dataframe数据结构 3.1 Dataframe简介 3.2 Dataframe创建方法 3.2....