Royc30ne

Royc30ne

机器学习 | 联邦学习 | VPS | 摄影 | 日常

[NumPy技巧]机器学习中使用numpy对数据集进行保存以集中管理

https://images.unsplash.com/photo-1646583288948-24548aedffd8?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb
文章首发于若绾

摘要#

在机器学习中,数据是至关重要的。因此,对于任何机器学习项目,对数据的管理和处理都是必不可少的。数据管理涉及到许多方面,包括数据的收集、清理、存储和处理。在这篇文章中,我们将讨论如何使用 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 数组array1array2,然后使用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 来保存数据集以供集中管理。这是一个重要的数据管理方面,应该在任何机器学习项目中得到充分的重视。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。