Numpy 存储和加载numpy数组
在本文中,我们将介绍如何使用Numpy库将数组存储为文件,并从文件中加载数组。Numpy是一个广泛使用的Python库,用于数值计算,特别是科学计算。它为Python提供了一个强大的数组处理工具。使用Numpy保存数据数组是进行数据分析和实验的常见方式之一。
阅读更多:Numpy 教程
存储numpy数组
要将Numpy数组存储为文件,我们可以使用numpy的save函数。下面是使用例子:
import numpy as np
# 构造 5x5 的随机数组
a = np.random.randn(5, 5)
# 存储到文件中
np.save('my_array.npy', a)
运行以上代码后,我们将生成一个名为 my_array.npy
的文件,其中包含Numpy数组 a
的数据。
我们还可以将多个数组存储到同一个文件中。下面的示例显示了如何存储两个不同的Numpy数组:
import numpy as np
# 构造两个不同的数组
a = np.random.randn(5, 5)
b = np.random.randn(10, 10)
# 保存到同一个文件中
np.savez('my_arrays.npz', a=a, b=b)
运行以上代码后,我们将生成一个名为 my_arrays.npz
的文件,其中包含两个不同的Numpy数组 a
和 b
的数据。
加载numpy数组
要加载一个Numpy数组,我们可以使用numpy的load函数。下面是使用例子:
import numpy as np
# 加载我们之前存储的my_array.npy文件
a = np.load('my_array.npy')
# 打印数组
print(a)
如果my_array.npy文件的路径正确,上述代码将输出以下数组:
[[ 0.61002888 1.6782905 0.41169135 1.65043003 -0.73202119]
[-0.14007132 -1.23420299 0.396286 0.15808155 0.59118173]
[-1.28789198 -1.94735367 -1.49005075 1.2979725 -0.07933404]
[-0.59977573 -0.32297896 2.17426384 -0.59774565 0.23438298]
[ 0.46152841 -0.32806565 -0.20054694 -1.11246575 -0.81877579]]
我们还可以从包含多个数组的文件中加载单个数组。下面是一个例子:
import numpy as np
# 加载存储多个数组的my_arrays.npz文件中的a数组
data = np.load('my_arrays.npz')
a = data['a']
# 打印a数组
print(a)
如果my_arrays.npz文件的路径正确,上述代码将输出以下数组:
[[ 0.61002888 1.6782905 0.41169135 1.65043003 -0.73202119]
[-0.14007132 -1.23420299 0.396286 0.15808155 0.59118173]
[-1.28789198 -1.94735367 -1.49005075 1.2979725 -0.07933404]
[-0.59977573 -0.32297896 2.17426384 -0.59774565 0.23438298]
[ 0.46152841 -0.32806565 -0.20054694 -1.11246575 -0.81877579]]
数组压缩
当我们需要存储大量的Numpy数组时,存储和加载时间会变得较长。为了加快这一过程,我们可以对数组进行压缩和解压缩。Numpy提供了一个zipfile模块,可用于对数组进行压缩和解压缩。
下面是一个压缩数组并存储到文件的例子:
import numpy as np
import zipfile
# 构造 1000x1000 的随机数组
a = np.random.randn(1000, 1000)
# 压缩数组
compressed_a = zipfile.compress(a)
# 存储到文件
with open('compressed_array.npy', 'wb') as f:
f.write(compressed_a)
运行以上代码后,我们将生成一个名为 compressed_array.npy
的压缩文件,其中包含Numpy数组 a
的压缩数据。
要加载已压缩的数组,我们需要先将其解压缩,然后再使用numpy的load函数加载数据。下面是一个解压缩并加载数组的例子:
import numpy as np
import zipfile
# 从文件中读取压缩的数组
with open('compressed_array.npy', 'rb') as f:
compressed_a = f.read()
# 解压缩
a = zipfile.decompress(compressed_a)
# 加载数组
a = np.load(a)
# 打印数组
print(a)
如果compressed_array.npy文件的路径正确,上述代码将输出以下数组:
[[ 0.06602722 -0.2854352 1.42722696 ... -1.70686451 0.6255961
-0.20881003]
[ 0.43067331 -0.65051192 -0.65452617 ... -0.7029263 -1.14172533
0.83863905]
[ 1.81229926 0.47941172 1.01881475 ... 0.40542795 1.4508787
1.12715619]
...
[ 0.16091747 0.30645394 -0.67680454 ... -1.10624423 1.79991502
0.86418606]
[-0.13815209 0.3702881 0.4111539 ... -0.41450549 -0.9251469
0.85459903]
[-0.39383997 0.85384854 1.48025854 ... 0.68065205 0.28287761
-0.57464411]]
总结
在本文中,我们学习了如何使用Numpy库将数组存储为文件,并从文件中加载数组。我们还了解了如何对大型数组进行压缩和解压缩,以加快存储和加载时间。使用Numpy生态系统中的这些函数,我们可以轻松地将数据存储到文件中,并在需要时从文件中加载数据。这些技术对于大规模科学计算和数据分析非常有用。