numpy的文件存储.npy .npz 文件详解

Numpy能够读写磁盘上的文本数据或二进制数据。

1、npy文件——Numpy专用的二进制格式

np.load()和np.save()是读写磁盘数组数据的两个重要函数。

使用时,数组会以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

import numpy as np

a = np.random.randint(0, 10, (3,), dtype='int')
print('save:', a)
np.save('test.npy', a)

b = np.load('test.npy')
print('read:', b)

#输出结果如下:
save: [0 1 2]
read: [0 1 2]

注:保存为Numpy专用的二进制格式后,就不能用notepad++等打开看了(乱码)。因此这种方式建议在不需要看保存文件内容的情况下使用。

2、npz文件——压缩文件

使用np.savez()函数可以将多个数组保存到同一个文件中。
np.savez()函数的第一个参数是文件名,其后的参数都是需要保存的数组。传递数组时可以使用关键字参数为数组命名,非关键字参数传递的数组会自动起名为arr_0、arr_1……
np.savez()函数输出的是一个扩展名为.npz的压缩文件,它包含多个与保存的数组对应的npy文件(由save()函数保存),文件名对应数组名。
读取.npz文件时使用np.load()函数,返回的是一个类似于字典的对象,因此可以通过数组名作为关键字对多个数组进行访问。

a = np.random.randint(0, 10, (3,), dtype='int')
b = np.random.randint(0, 10, (3,), dtype='int')
c = np.random.randint(0, 10, (3,), dtype='int')
print('save:', a, b, c)
np.savez('test.npz', a, b, c)

data = np.load('test.npz')
print(data.files)
aa = data[data.files[0]]
bb = data[data.files[1]]
cc = data[data.files[2]]
print('read:', aa, bb, cc)

#输出结果如下:
save: [1 2 1] [5 0 7] [6 6 7]
['arr_0', 'arr_1', 'arr_2']
read: [1 2 1] [5 0 7] [6 6 7]

如若想给保存的数组命名,而不是默认的“arr_0”、“arr_1”、“arr_2”...的话,只需修改np.savez中传递的参数即可。

import numpy as np

a = np.random.randint(0, 10, (3,), dtype='int')
b = np.random.randint(0, 10, (3,), dtype='int')
c = np.random.randint(0, 10, (3,), dtype='int')
print('save:', a, b, c)
np.savez('test.npz', a=a, b=b, c=c)
#np.savez('test.npz', a1111=a, b=b, c=c)

data = np.load('test.npz')
print(data.files)
aa = data[data.files[0]]
bb = data[data.files[1]]
cc = data[data.files[2]]
print('read:', aa, bb, cc)

#输出结果如下:
save: [0 9 5] [0 7 2] [0 4 0]
['a', 'b', 'c']
#['a1111', 'b', 'c']
read: [0 9 5] [0 7 2] [0 4 0]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值