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: 输出的格式字符串。定义如何格式化数据(例如,浮点精度)。
  • delimiter: 文件中分隔值用的字符串或字符(例如,逗号用于 CSV,空格用于空格分隔)。
  • header: 要写入文件开头的字符串。用于添加元数据或列名。
  • footer: 要写入文件结尾的字符串。可用于附加信息。
  • comments: 指示注释开始的字符串。默认为 #。

示例

在下面的示例中,我们使用 np.savetxt() 函数将一个二维 NumPy 数组保存到文本文件中:

import numpy as np

# Create an array
array = np.array([[1, 2, 3], [4, 5, 6]])

# Save the array to a text file
np.savetxt('data.txt', array, fmt='%d', delimiter=',', header='Column1,Column2,Column3')
print ('File Saved succesfully!!')

获得的输出如下:

File Saved succesfully!!

将数组保存到二进制文件

在 NumPy 中将数组保存到二进制文件是将数值数据以紧凑格式存储的一种方法。二进制文件通常用于保存大型数据集或出于性能原因,因为与文本文件相比,它们通常读取和写入速度更快。

NumPy 提供了np.save() 函数、np.savez() 函数和np.savez_compressed() 函数,专门用于以二进制格式保存数组。

使用 np.save() 函数

np.save() 函数将单个 NumPy 数组保存到 NumPy 原生的.npy 格式的二进制文件中。此格式包含元数据,例如数组的形状和 dtype,允许以后加载和操作。以下是语法:

numpy.save(file, arr, allow_pickle=False, fix_imports=True)

其中,

  • file: 将数组保存到的文件名或文件对象。文件扩展名应为 .npy。
  • arr: 要保存的 NumPy 数组。
  • allow_pickle: 如果为 True,则允许保存可以腌制的对象。默认为 False。
  • fix_imports: 如果为 True,则尝试修复加载腌制数据时的兼容性问题(对于 Python 2 到 3)。

示例

在这个例子中,我们使用 np.save() 函数将一个二维 NumPy 数组保存到二进制“.npy”文件中,该函数有效地存储数组数据:

import numpy as np

# Create an array
array = np.array([[1, 2, 3], [4, 5, 6]])

# Save the array to a .npy file
np.save('array.npy', array)
print ("File saved!!")

这将产生以下结果:

File saved!!

使用 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

# Create multiple arrays
array1 = np.array([1, 2, 3])
array2 = np.array([[4, 5, 6], [7, 8, 9]])

# Save the arrays to a .npz file
np.savez('arrays.npz', array1=array1, array2=array2)
print ("File saved!!")

以上代码的输出如下:

File saved!!

使用 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

# Create multiple arrays
array1 = np.array([1, 2, 3])
array2 = np.array([[4, 5, 6], [7, 8, 9]])

# Save the arrays to a compressed .npz file
np.savez_compressed('arrays_compressed.npz', array1=array1, array2=array2)
print ("File saved!!")

获得的输出如下:

File saved!!
广告