当我们在Python中进行科学计算或机器学习时,常用的存储文件格式一般有csv、JSON、npy/npz等。在本篇攻略中,我们将详细讲解如何使用Python存储和读取numpy的二进制数据文件npy格式。
什么是.npy文件格式
Npy文件是numpy的二进制格式文件,其中存储了numpy的多维数组或矩阵。与文本文件如csv不同,npy文件能够以二进制形式存储数据,因此具有更快的读写速度和更小的文件大小。
存储npy格式文件
方法1:使用numpy库的save和savez函数
numpy库提供了两个函数,分别是save()
和savez()
,用于存储numpy数组为npy文件。save()
函数用于存储单个数组,而savez()
函数用于存储多个数组,这些数组在文件中被压缩到一个文件中。
这里我们以存储一维数组为例,首先我们需要导入numpy库:
import numpy as np
然后,创建一个数组:
arr = np.arange(10)
接着,使用save()
方法可以将该数组存储为npy文件,代码如下:
np.save("arr.npy", arr)
这里的"arr.npy"
代表要存储的文件路径和文件名,我们也可以更改为其他的文件名。然后在运行该代码后,我们可以在当前目录下看到一个名为“arr.npy”的文件,存储了我们的数据。
压缩多个数组到一个.npy文件中同样很简单,只需要使用savez()
方法即可,示例如下:
arr1 = np.arange(5)
arr2 = np.arange(10, 15)
np.savez("arrs.npz", arr1=arr1, arr2=arr2)
这里的"arrs.npz"
表示要存储到的文件路径和文件名,我们可以将其中的多个数组通过关键字参数的形式传入。
方法2:使用pickle库
pickle库和numpy库类似,也可以用于存储numpy数组为二进制文件或文本文件。与numpy库的不同之处是,pickle库可以存储任何Python对象,而numpy库只能存储numpy数组。
使用pickle库存储numpy数组非常简单,我们可以通过下面的代码存储一维数组:
import pickle
arr = np.arange(10)
with open("arr.pkl", "wb") as f:
pickle.dump(arr, f)
这里的"arr.pkl"
表示要存储的文件路径和文件名,文件打开方式“wb”代表二进制写入方式。我们将数组和文件作为参数传递给pickle.dump()
函数即可。
读取npy格式文件
使用numpy库可以方便地从npy文件中读取numpy数组,我们可以使用load()
函数读取单个npy文件,用load()
函数或load()
函数汇总来读取.npy文件中压缩的多个数组。示例如下:
# 读取单个npy文件
arr = np.load("arr.npy")
print(arr)
# 读取多个数组所在的npz文件
arrs = np.load("arrs.npz")
print(arrs["arr1"])
print(arrs["arr2"])
这里的“arr”和“arrs”分别是导入的npy或npz文件中的数组,我们可以通过下标或关键字进行取值。
示例说明
示例1:存储并读取一维数组
import numpy as np
# 存储一维数组
arr = np.arange(10)
np.save("arr.npy", arr)
# 读取一维数组
arr_loaded = np.load("arr.npy")
print(arr_loaded)
输出:
[0 1 2 3 4 5 6 7 8 9]
示例2:存储并读取多个数组
import numpy as np
# 存储多个数组
arr1 = np.arange(5)
arr2 = np.arange(10, 15)
np.savez("arrs.npz", arr1=arr1, arr2=arr2)
# 读取多个数组
arrs_loaded = np.load("arrs.npz")
print(arrs_loaded["arr1"])
print(arrs_loaded["arr2"])
输出:
[0 1 2 3 4]
[10 11 12 13 14]
以上就是Python存取npy格式数据的实例攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 存取npy格式数据实例 - Python技术站