摘要
在机器学习中,数据是至关重要的。因此,对于任何机器学习项目,对数据的管理和处理都是必不可少的。数据管理涉及到许多方面,包括数据的收集、清理、存储和处理。在这篇文章中,我们将讨论如何使用NumPy来保存数据集以供集中管理。
使用NumPy保存数据集
NumPy是一种用于科学计算的Python库。它提供了一个强大的多维数组对象,以及一系列用于处理这些数组的函数。NumPy数组可以存储不同类型的数据,包括数字、字符串和布尔值。因此,它们是存储数据集的理想选择。
保存单个数组
如果你的数据集中只有一个数组,我们可以使用NumPy的save
函数。
numpy.save
函数变量:
file: file, str, or pathlib.Path
数据被保存到的文件或文件名。如果文件是一个文件对象,那么文件名将不会改变。如果文件是一个字符串或路径,如果文件名还没有扩展名,那么将在文件名上添加一个
.npy
扩展名。arr: array_like
要保存的阵列数据。
allow_pickle: bool, optional
允许使用Python pickles来保存对象数组。不允许pickle的原因包括安全性 (加载pickle的数据可以执行任意代码) 和可移植性 (pickle的对象可能无法在不同的Python安装上加载,例如,如果存储的对象需要的库不可用,而且不是所有pickle的数据都能在Python 2和Python 3之间兼容)。默认值: True
fix_imports: bool, optional
只有在强迫Python 3上对象数组中的对象以Python 2兼容的方式被pickle时才有用。如果 fix_imports 为 True,pickle 将尝试把新的 Python 3 名称映射到 Python 2 中使用的旧模块名称,这样 pickle 的数据流就可以用 Python 2 读取。
例如,假设我们有一个名为data
的NumPy数组,我们可以使用以下代码将其保存到名为data.npy
的文件中:
import numpy as np
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
np.save('data.npy', data)
从文件中加载数组
要加载数据集,我们可以使用NumPy的load
函数。例如,以下代码加载了名为data.npy
的文件中保存的数组:
import numpy as np
data = np.load('data.npy')
print(data)
输出将是:
[[1 2 3]
[4 5 6]
[7 8 9]]
同时保存多个数组
如果你的数据集中具有多个数组,像trani_set, train_label, test_set, test_label。可以使用NumPy的savez
或者savez_compressed
函数对数据集进行保存。**numpy.savez
将多个数组保存为未压缩的.npz
文件,而numpy.savez_compressed
将数组保存为压缩的.npz
**文件,可以节省存储空间。
numpy.savez
函数变量:
file: str or file
文件名(str)或一个打开的文件(file-like object),数据将被保存在那里。如果文件是一个字符串或一个路径,如果文件名中没有
.npz
扩展名,将被附加到文件名中.args: Arguments, optional
要保存到文件中的数组。请使用关键字参数(见下面的kwds)来给数组指定名称。作为args指定的数组将被命名为 “arr_0″、”arr_1″,以此类推。
kwds: Keyword arguments, optional
要保存到文件的数组。每个数组将以其相应的关键字名称保存到输出文件中。
用kwds,数组将以关键字的名称保存。在这个例子中,我们创建了两个NumPy数组array1
和array2
,然后使用numpy.savez
将它们保存到名arrays.npz
**的文件中。需要注意的是,我们需要为每个数组指定一个关键字参数,该参数将作为数组在文件中的名称。
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
# 保存数组到文件
np.savez('arrays.npz', arr1=array1, arr2=array2)
numpy.savez_compressed
函数变量:
file: str or file
文件名(str)或一个打开的文件(file-like object),数据将被保存在那里。如果文件是一个字符串或一个路径,如果文件名中没有
.npz
扩展名,将被附加到文件名中。args: Arguments, optional
要保存到文件中的数组。请使用关键字参数(见下面的kwds)来给数组指定名称。作为args指定的数组将被命名为 “arr_0″、”arr_1″,以此类推。
kwds: Keyword arguments, optional
要保存到文件的数组。每个数组将以其相应的关键字名称保存到输出文件中。
这个例子与上一个类似,但使用了**numpy.savez_compressed
将数组保存为压缩的.npz
**文件。
import numpy as np
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
# 保存数组到压缩文件
np.savez_compressed('compressed_arrays.npz', arr1=array1, arr2=array2)
从文件中加载数组
要从**.npz
文件中加载数组,可以使用numpy.load
**函数:
import numpy as np
# 加载保存的数组
loaded_arrays = np.load('arrays.npz')
# 通过在文件中指定的名称访问数组
loaded_array1 = loaded_arrays['arr1']
loaded_array2 = loaded_arrays['arr2']
在这个例子中,我们使用**numpy.load
加载了名为arrays.npz
的文件,并通过之前指定的名称访问其中的数组。同样的方法也适用于加载压缩的.npz
**文件。
小结
在本文中,我们讨论了如何使用NumPy来保存数据集以供集中管理。这是一个重要的数据管理方面,应该在任何机器学习项目中得到充分的重视。
评论 (0)