如何将NumPy数组保存到文件中以进行机器学习

数据森麟

共 3114字,需浏览 7分钟

 · 2020-01-04

8908a3cdef6a0a47dfc439694d303110.webp


     作者:小王


     来源:程序员小王

2832612a51d497c0c9240f53607a0b53.webp


写在前面:

祝大家新年快乐,今天看到的文章然后就翻译了一下,涉及到的技术点都很简单,算是一篇水文,而且我对文章的改动比较大,但是还希望能给你带来一点帮助。


机器学习模型中通常需要使用NumPy数组,NumPy数组是处理Python中数据有效的数据结构,机器学习模型(例如scikit-learn)和深度学习模型(例如Keras)都期望输入数据采用NumPy数组的格式,并以NumPy数组的格式进行预测。因此,通常需要将NumPy数组保存到文件中。

学习过本篇文章后,您将知道:

  • 如何将NumPy数组保存为CSV文件。

  • 如何将NumPy数组保存为NPY文件。

  • 如何将NumPy数组保存到NPZ文件。


具体介绍:

1.将NumPy数组保存到.CSV文件

CSV文件是以逗号为分隔符号,将各字段列分离出的一种ASCII文件,可以使用savetxt()函数将NumPy数组保存为CSV文件,此函数将文件名和数组作为参数,并将数组保存为CSV格式。


1.1将NumPy数组保存到CSV文件的示例

下面的示例演示如何将单个NumPy数组保存为CSV格式。

# save numpy array as csv file
from numpy import asarray
from numpy import savetxt
# define data
data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
# save to csv file
savetxt('data.csv', data, delimiter=',')

运行示例将定义一个NumPy数组,并将其保存到文件“ data.csv ”中。
该数组具有10列的单行数据。我们希望将这些数据作为单行数据保存到CSV文件中。运行示例之后,我们可以检查“ data.csv ” 的内容看到以下内容:

8ade9d0efe117fb77f489d8ab5819231.webp

我们可以看到数据已正确地保存为单行,并且数组中的浮点数已以全精度保存。

1.2从CSV文件加载NumPy数组的示例

我们可以使用loadtext()函数将此数据作为NumPy数组加载,并指定文件名和相同的逗号分隔符。下面列出了完整的示例。

# load numpy array from csv file
from numpy import loadtxt
# load array
data = loadtxt('data.csv', delimiter=',')
# print the array
print(data)

运行该示例将从CSV文件加载数据并打印内容,使我们的单行与上一示例中定义的10列匹配。

7a6c7dcf47e0693b300d681ae2a19d0c.webp


2.将NumPy数组保存到.NPY文件

有时,我们希望以NumPy数组的形式保存大量数据,但我们需要在另一个Python程序中使用这些数据。因此,我们可以将NumPy数组保存为一种本机二进制格式,既可以有效保存又可以加载。.npy文件格式适合这种使用情况,并且简称为“NumPy格式”。可以通过使用save()函数并指定文件名和要保存的数组来实现。

2.1将NumPy数组保存到NPY文件
下面的示例定义了我们的二维NumPy数组,并将其保存到.npy文件中。

# save numpy array as npy file
from numpy import asarray
from numpy import save
# define data
data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
# save to npy file
save('data.npy', data)

运行示例之后,您将在目录中看到一个名为“ data.npy ” 的新文件。
您不能直接使用文本编辑器检查此文件的内容,因为它是二进制格式。

2.2从NPY文件加载NumPy数组的示例
您可以稍后使用load()函数将此文件作为NumPy数组加载。下面列出了完整的示例。

# load numpy array from npy file
from numpy import load
# load array
data = load('data.npy')
# print the array
print(data)

运行该示例将加载文件并打印内容,确认两者均已正确加载并且内容与我们期望的相同。

da011abc431a909a9afa1277caf08793.webp

3.将NumPy数组保存到.NPZ文件

有时,我们准备用于建模的数据,这些数据需要在多个实验中重复使用,但是数据很大。这可能是经过预处理的NumPy数组,例如文本集或重新缩放的图像数据的集合。在这些情况下,既要将数据保存到文件中,又要以压缩格式保存。这样可以将千兆字节的数据减少到数百兆字节,并允许轻松传输到其他云计算服务器,以实现较长的算法运行时间。.npz文件格式适合这种情况,并支持本机NumPy文件格式的压缩版本。savez_compressed()函数可以将多个NumPy的阵列被保存到一个单一的压缩.npz文件。

3.1将NumPy数组保存到NPZ文件
我们可以使用此功能将单个NumPy数组保存到压缩文件中。下面列出了完整的示例。

# save numpy array as npz file
from numpy import asarray
from numpy import savez_compressed
# define data
data = asarray([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]])
# save to npy file
savez_compressed('data.npz', data)

运行示例将定义数组,并将其保存为压缩的numpy格式的文件,名称为“ data.npz”。与.npy格式一样,我们无法使用文本编辑器检查已保存文件的内容,因为文件格式为二进制。

3.2从NPZ文件加载NumPy数组的示例
我们可以使用load()函数来加载此文件。在这种情况下,savez_compressed()函数支持将多个数组保存到单个文件中。load()函数可能会加载多个数组。加载的数组从dict中的load()函数返回,第一个数组的名称为'arr_0',第二个数组的名称为'arr_1',依此类推。
下面列出了加载单个数组的完整示例。

# load numpy array from npz file
from numpy import load
# load dict of arrays
dict_data = load('data.npz')
# extract the first array
data = dict_data['arr_0']
# print the array
print(data)

运行示例将加载包含数组字典的压缩numpy文件,提取我们保存的第一个数组,然后打印内容,确认值和数组形状与保存在数组中的内容匹配。

da011abc431a909a9afa1277caf08793.webp



◆ ◆ ◆  ◆ 



长按二维码关注我们



数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。


管理员二维码:


猜你喜欢

 笑死人不偿命的知乎沙雕问题排行榜

 我用Python纪念了那些被烂片收割的智商税!

 互联网大佬学历&背景大揭秘,看看是你的老乡还是校友

 上万条数据撕开微博热搜的真相!

 你相信逛B站也能学编程吗? 

 

浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报