beat365网址官网网站-365体育世界杯专用版-365体育注册送365

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

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]