IT编程 > 脚本编程 > Python

Numpy用于数据存储和读取

232600人参与2019-12-06

python的numpy模块可用于存储和读取数据:

1.将一个数组存储为二进制文件

numpy.save:将一个数组以.npy的格式保存为二进制文件

调用格式:numpy.save(file, arr, allow_pickle=true, fix_imports=true)

file的格式:file,str,or pathlib.path. 如果file是一个文件对象,则文件名不会被改变;如果file是一个字符串或者路径,并且没有 .npy扩展,则会在后面加上 .npy的扩展

arr: 要保存的数组对象

numpy.load:从.npy .npz或者pickled文件中加载数组或者pickled对象

调用格式:numpy.load(filemmap_mode=noneallow_pickle=falsefix_imports=trueencoding='ascii')

file的格式:  file-like object, string, or pathlib.path.类似文件对象(file_like object)必须支持seek()read()方法。pickled文件要求file_like object必须支持readline()方法

encoding:读取python 2中的字符串时使用的编码方式。仅当在python 3中加载python 2生成的pickled文件时有用,该文件包括含有对象数组的npy / npz文件。不允许使用“ latin1”,“ ascii”和“ bytes”以外的其他值,因为它们会破坏数字数据。默认值:“ ascii”

返回:数组、元组或者字典等

例如:

import numpy as np

arr = np.arange(12).reshape(3,4)
# 保存arr数组
np.save('arr.npy', arr)
# 读取arr文件
a = np.load('arr.npy')
print(a)

2.将一个数组存储为文本文件

numpy.savetxt将一个数组保存为文本文件,只能存储一维和二维数组

调用格式:numpy.savetxt(fname, x, fmt='%.18e', delimiter=' ', newline='n', header='', footer='', comments='# ', encoding=none)

fname:filename or file handle. 如果文件名以.gz结尾,文件将自动保存为gzip的压缩格式

x:要保存的一维或者二维数组对象

fmt:规定保存的数组元素类型,默认为%.18e

delimiter:字符串或者字符,用来分隔列,默认为空格

numpy.loadtxt从一个文本文件中加载数据,文本文件每一行的数值个数必须相同

调用格式:numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=none, converts=none, skiprows=0, usecols=none, unpack=false, ndmin=0, encoding='bytes', max_rows=none)

fname:要读取的文件,可以是.gz或者.bz2的压缩文件

dtype:指定数组的数据类型,默认为float

delimiter:用于分隔元素,要与文件中的分割符一致,默认为空格

返回:ndarray

例如:

import numpy as np

arr = np.arange(12).reshape(3,4)
# 将一个数组保存为csv文件
np.savetxt('arr.csv', arr, delimiter=',')
# 读取文件
arr_file = np.loadtxt('arr.csv', dtype=np.int, delimiter=',')
print(arr_file)

3.将多个数组存入一个文件

numpy.savez:将多个数组以未压缩的.npz格式存入一个文件中

调用格式:numpy.savez(file, *args, **kwds)

如果传入的数组参数没有给相应的键,则函数会自动给每个数组参数一个名字,从arr_0、arr_1、arr_2依次递推;如果给定了键,则可以用给定的键。

例如:

 

import numpy as np

arr1 = np.arange(12).reshape(3, 4) 
arr2 = np.random.randint(0, 12, (3, 4))

# 不给数组参数相应的键
np.savez('array.npz', arr1, arr2)
f = np.load('array.npz')
print(f['arr_0'])
print(f['arr_1'])

# 给数组参数相应的键
np.savez('array2.npz', arr1=arr1, arr2=arr2)
f2 = np.load('array2.npz')
print(f2['arr1'])
print(f2['arr2'])

 

4.将多个数组以压缩的形式存入一个文件

 

 numpy.savez_compressed:将多个数组以压缩后的.npz格式保存到一个文件中

调用格式:numpy.savez_compressed(file, *args, **kwds)

savez_compressed的用法与savez类似

您对本文有任何疑问!!点此进行留言回复

推荐阅读

猜你喜欢

Numpy用于数据存储和读取

12-06

scrapy服务化持久运行

12-06

利用Python开发智能阅卷系统

12-06

用Python实现扑克牌面试题思路

12-06

Flask 模板语言,装饰器

12-06

如何将pyqt5的qt-designer设计出来的 .ui 和 .qrc 文件转化成 .py 文件

12-06

拓展阅读

大家都在看

Numpy用于数据存储和读取

12-06

python 异常处理 StopIteration 用来作为迭代器的输出停止/next()

07-12

OpenCV 画多边形 — cv.polylines()函数使用

10-06

ROS笔记——在conda的python3.7中使用ROS Kinetic

07-30

使用Keras加载含有自定义层或函数的模型操作

06-18

python 实现rolling和apply函数的向下取值操作

06-23

pycharm 2020 Error: failed to send plot to http://127.0.0.1:63342

07-30

使用Python来开发Markdown脚本扩展的实例分享

05-30

热门评论