NumPy - 保存数组
在 NumPy 中保存数组
在 NumPy 中保存数组是指将 NumPy 数组写入文件以便存储和稍后重新加载的过程。
NumPy 提供了多种保存数组格式的方法,具体如下:-
- np.save() 函数: 将单个 NumPy 数组以二进制 .npy 格式保存到文件中。
- np.savez() 函数: 将多个 NumPy 数组以压缩的 .npz 格式保存到单个文件中。
- np.savez_compressed() 函数: 与 np.savez 类似,但会压缩数据以减少文件大小大小。
- np.savetxt() 函数:将 NumPy 数组保存到特定格式的文本文件。
将数组保存到文本文件
在 NumPy 中,将数组保存到文本文件有助于以人类可读的格式导出数据,或与其他需要文本输入的程序兼容。
NumPy 使用 np.savetxt() 函数将数组写入指定格式的文本文件。该函数旨在处理包含数值数据的数组,但可以通过格式化选项适应各种用例。语法如下:
numpy.savetxt(fname, data, fmt=<format>, delimiter=<delimiter>, header=<header>, footer=<footer>, comments=<char>)
其中:
- fname: 保存数据的文件名或文件对象。
- data: 要保存的数组。可以是一维或多维数组。
- fmt: 输出的格式字符串。定义数据的格式(例如,浮点精度)。
- 分隔符: 文件中用于分隔值的字符串或字符(例如,CSV 文件中使用逗号,空格分隔)。
- 标头: 写入文件开头的字符串。用于添加元数据或列名。
- 页脚: 写入文件末尾的字符串。可用于添加其他信息。
- 注释: 表示注释开头的字符串。默认值为 #。
示例
以下示例中,我们使用 np.savetxt() 函数将一个二维 NumPy 数组保存到文本文件 -
import numpy as np # 创建数组 array = np.array([[1, 2, 3], [4, 5, 6]]) # 将数组保存到文本文件 np.savetxt('data.txt', array, fmt='%d', delimiter=',', header='Column1,Column2,Column3') print ('文件保存成功!')
以下是输出结果 -
文件已保存成功!!
将数组保存为二进制文件
在 NumPy 中,将数组保存为二进制文件是一种以紧凑格式存储数值数据的方法。二进制文件通常用于保存大型数据集或出于性能考虑,因为与文本文件相比,它们的读写速度通常更快。
NumPy 提供了 np.save() 函数、np.savez() 函数和 np.savez_compressed() 函数,专门用于以二进制格式保存数组。
使用 np.save() 函数
np.save() 函数将单个 NumPy 数组保存为 NumPy 原生 .npy 格式的二进制文件。此格式包含数组形状和数据类型等元数据,方便后续加载和操作。语法如下:
numpy.save(file, arr, allow_pickle=False, fix_imports=True)
其中:
- file: 数组将保存到的文件名或文件对象。文件扩展名应为 .npy。
- arr: 要保存的 NumPy 数组。
- allow_pickle: 如果为 True,则允许保存可序列化的对象。默认值为 False。
- fix_imports: 如果为 True,则尝试修复加载 pickle 数据时的兼容性问题(适用于 Python 2 到 3)。
示例
在此示例中,我们使用 np.save() 函数将二维 NumPy 数组保存到二进制".npy"文件中,该函数可以高效地存储数组数据 -
import numpy as np # 创建数组 array = np.array([[1, 2, 3], [4, 5, 6]]) # 将数组保存到 .npy 文件 np.save('array.npy', array) print ("文件已保存!!")
这将产生以下结果 -
文件已保存!!
使用 np.savez() 函数
np.savez() 函数将多个数组保存到一个扩展名为".npz"的文件中。".npz"文件是一个 zip 压缩包,每个数组包含一个".npy"文件,可以通过名称访问。语法如下:
numpy.savez(file, *args, **kwargs)
其中,
- file: 数组将保存到的文件名或文件对象。文件扩展名应为 .npz。
- *args: 要保存的数组。
- **kwargs: 指定每个数组名称的关键字参数。
示例
在下面的示例中,我们使用 np.savez() 函数将多个 NumPy 数组保存到压缩的".npz"文件中,其中"array1"和"array2"以其各自的名称存储 -
import numpy as np # 创建多个数组 array1 = np.array([1, 2, 3]) array2 = np.array([[4, 5, 6], [7, 8, 9]]) #将数组保存到 .npz 文件 np.savez('arrays.npz', array1=array1, array2=array2) print ("文件已保存!!")
以下是上述代码的输出 -
文件已保存!!
使用 np.savez_compressed() 函数
np.savez_compressed() 函数与 np.savez() 函数类似,但它会压缩数组以减小文件大小。这对于更高效地存储大型数据集非常有用。语法如下:
numpy.savez_compressed(file, *args, **kwargs)
其中,
- file: 数组将保存到的文件名或文件对象。文件扩展名应为 .npz。
- *args: 要保存的数组。
- **kwargs: 指定每个数组名称的关键字参数。
示例
此处,我们使用 np.savez_compressed() 函数将多个 NumPy 数组保存到压缩的".npz"文件中,该函数在存储"array1"和"array2"各自的名称的同时,减小了文件大小 -
import numpy as np # 创建多个数组 array1 = np.array([1, 2, 3]) array2 = np.array([[4, 5, 6], [7, 8, 9]]) # 将数组保存为压缩的 .npz 文件 np.savez_compressed('arrays_compressed.npz', array1=array1, array2=array2) print ("文件已保存!")
输出结果如下 -
文件已保存!