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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM