Numpy文本读写:loadtxt,savetxt,genfromtxt

文章目录

    • savetxt
    • loadtxt
    • genfromtxt

numpy中为文本的输入输出提供了一组对偶函数,即 loadtxtsavetxt

savetxt

考虑到大家手里没有合适的用于学习的txt文件,所以先介绍savetxt,其参数入口如下

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

其中,fnameX为必选参数,分别表示文件路径和将要存储的数组,其他参数含义如下

  • fmt 存储格式
  • delimiter 分隔符
  • newline 换行符
  • header 文件头部添加的内容
  • footer 文件尾部添加的内容
  • comments 注释
  • encoding 编码方式

其中,fmt用于格式化存储数组数据,其基本形式与C语言或者Python进行格式化字符串的形式是相同的。例如%f表示存储为浮点型;%.2f表示存储的浮点型值保留两位小数。如果fmt中只有一个%,则对所有列采取相同的处理方法,否则每一列按照不同的处理方法。具体情况可见如下案例

import numpy as np
x = np.random.rand(3,5)
np.savetxt("test.txt", x, fmt="%.2f", header='a b c d e')

保存结果为

# a b c d e
0.14 0.65 0.13 0.44 0.35
0.16 0.92 0.18 0.76 0.92
0.80 0.07 0.83 0.52 0.37

即每一列都保留了两位有效数字,同时文件开头也添加了相应的header,并且添加了comments。其分隔符为空格,换行符为\n。由于fotterheader作用方式相同,所以下面就不再演示了。

如果对每一列设定不同的fmt,则效果为

np.savetxt("test1.txt", x, fmt="%.2f %.3f %.4f, %e, %.5f")

保存结果如下,可见的确保留了相应的小数位数。

0.14 0.649 0.1332, 4.447176e-01, 0.35217
0.16 0.917 0.1831, 7.607057e-01, 0.92109
0.80 0.074 0.8343, 5.217247e-01, 0.36754

loadtxt

loadtxtsavetxt的对偶函数,功能是读取函数。

numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None, *, like=None)

其中,fname, comments, delimiter, encoding这四个参数与savetxt中的含义相同,只在读写过程中有微小差异,参数含义为

  • dtype 读取后的数据类型
  • comments 注释标识符,加载时会自动忽略注释标识符后的字符串
  • delimiter 分割符,为整数时表示元素最大宽度
  • converters 字典或函数,用以转化数据格式
  • skiprows 忽略行数
  • usecols 使用的列号
  • unpack 读取后转置
  • ndmin 返回数组的最小维度
  • max_rowsskiprows后面读取的最多行数
  • like 读取后的数组格式与like数组相同

以刚刚存储的test.txt为例,

>>> np.loadtxt("test.txt")
array([[0.14, 0.65, 0.13, 0.44, 0.35],
       [0.16, 0.92, 0.18, 0.76, 0.92],
       [0.8 , 0.07, 0.83, 0.52, 0.37]])

genfromtxt

genfromtxt(fname,dtype,comments,delimiter,skipd_header,skip_fonter,converters,missing_values,filling_values,usecols,names, autostrip,**kwarg)

其中,大部分参数与loadtxt中含义相同,其他参数的含义如下。

  • skip_header 跳过文件头部的字符行数
  • skip_footer 跳过文件尾部字符串行数
  • missing_values 指定数组中忽略的值
  • filling_values 指定某个值用于替代忽略值
  • autostrip 为True时可自动去除变量首尾的空格

你可能感兴趣的:(#,Numpy,numpy,python,loadtxt,savetxt,genfromtxt)