Numpy中的loadtxt、load、fromfile方法读取数据

Numpy读取文件的3中方法:loadtxt、load、fromfile。

方法 描述 返回数据
loadtxt 读取txt文本 数组
load 读取Numpy专用的二进制数据,读取从npy、npz、pickled文件加载数组或pickled对象 数组、元组、字典等
fromfile 简单的文本、二进制数 数据


1. loadtxt

loadtxt(fname, dtype=<type 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0)

参数:

fname:指定文件名称或字符串。支持压缩文件,包括gz、bz格式。

dtype:数据类型。 默认float。

comments:字符串或字符串组成的列表。表示注释字符集开始的标志,默认为#。

delimiter:字符串。分隔符。

converters:字典。将特定列的数据转换为字典中对应的函数的浮点型数据。例如将空值转换为0,默认为空。

skiprows:跳过特定行数据。例如跳过前1行(可能是标题或注释)。默认为0。

usecols:元组。用来指定要读取数据的列,第一列为0。例如(1, 3, 5),默认为空。

unpack:布尔型。指定是否转置数组,如果为真则转置,默认为False。

ndmin:整数型。指定返回的数组至少包含特定维度的数组。值域为0、1、2,默认为0。

返回:从文件中读取的数组。

示例数据如下:
image

import numpy as np
file_name = 'numpy_data.txt'
data = np.loadtxt(file_name, dtype='float32', delimiter=' ')
print(data)

image


2. load

load方法读取Numpy专用的二进制数据文件,从npy、npz、pickled文件加载数组或pickled对象,该文件通常基于Numpy的save或savez等方法产生。

load(file, mmap_model=None, allow_pickle=True, fix_import=True, encoding='ASCII')

参数:

file:类文件对象或字符串格式。类文件对象需要支持seek()和read()方法。

mmap_mode:内存映射模式。值域None。‘r+’,‘r’,'w+',‘c’。

allow_pickle:布尔型。决定是否加载存储在npy文件的pickled对象数组,默认为True。

fix_imports:布尔型。如果为True,pickle尝试将旧的Python 2名称映射到 Python3中并使用新的名称。仅在Python2生成的pickled文件加载Python3时才有用,默认值True.

encoding:字符串。决定读取Python 2 字符串时使用何种编码。

返回:从数据文件中读取的数组、元组、字典等。

示例数据如下:

import numpy as np
write_data = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])
np.save('load_data', write_data)		# 保存为npy数据文件
read_data = np.load('load_data.npy')	# 读取npy文件
print(read_data)

image


3. fromfile

Numpy的fromfile方法可以读取简单的文本文件以及二进制数据。

该方法读取的数据来源Numpy的tofile方法。即通过tofile()将数据保存为二进制文件。

fromfile(file, dtype=float, count=-1, sep='')

参数:

file:文件或字符串

dtype:数据类型。注意数据类型与文件存储的类型一致。

count:整数型。读取数据的数量,-1表示读取所有数据。

sep:字符串。如果file是一个文本文件,那么该值就是数据间的分隔符。如果为空("")则意味着file是一个二进制文件,多个空格的话按照一个空格处理。

返回:从文件中读取的数据。

image

import numpy as np
file_name = 'numpy_data.txt'
data = np.loadtxt(file_name, dtype='float32', delimiter=' ')
tofile_name = 'binary'		# 定义导出二进制文件名
data.tofile(tofile_name)	# 导出二进制文件
fromfile_data = np.fromfile(tofile_name, dtype='float32')	# 读取二进制文件
print(fromfile_data)

image

注意:务必确保读入文件跟存储文件时的数据类型一致,否则导致数据报错。比如上面代码,不指定float32格式,看一下输出结果。
tofile()方法保存的数据丢失数据形状信息,因此导入时无法重现原始数据矩阵。

image

原文地址:https://www.cnblogs.com/keye/p/15092276.html