本文共 1577 字,大约阅读时间需要 5 分钟。
import numpy as np
NumPy能够读写磁盘上的文本数据或二进制数据。当然pandas库中也有一些用于将表格型数据读取到内存中的工具,我们后面也会接触到。
将数组以二进制格式保存到磁盘
np.save和np.load是读写磁盘数组数据的两个主要函数。默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为.npy的文件中的。
In [3]:
arr = np.arange(10)np.save('arr', arr)
如果文件路径末尾没有扩展名.npy,系统会自动加上这个扩展名。然后我们就可以通过np.load读取磁盘上的数组:
In [4]:
np.load('arr.npy')
Out[4]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
我们还可以通过np.savez函数将多个数组保存到一个压缩文件中,将数组以关键字参数的形式传入即可:
In [5]:
np.savez('arrs.npz',a=arr,b=arr)
加载.npz文件时,你会得到一个类似字典的对象,该对象会对各个数组进行延迟加载:
In [6]:
arch = np.load('arrs.npz')
In [7]:
arch['a']
Out[7]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [8]:
arch['b']
Out[8]:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
存取文本文件
从文件中加载文本是一个非常常见的任务。有时我们需要用np.loadtxt或更为专门化的np.genfromtxt将数据加载到普通的NumPy数组中。 这些函数都有许多选项可以使用:指定各种分隔符、针对特定列的转换器函数、需要跳过的行数。一个简单的逗号分隔文件(CSV)为例:
array_ex.txt
In [11]:
!type array_ex.txt #linux请用!cat
0.580052,0.185730,1.040717,1.1344110.194163,-0.636917,-0.938659,0.124094-0.126410,0.268607,-0.695724,0.047428-1.4844132,0.004176,-0.744203,0.0054872.302869,0.200131,1.670238,-1.881090-0.193230,1.047233,0.482803,0.960334
该文件可以被加载到一个二维数组中,如下所示:
In [12]:
arr = np.loadtxt('array_ex.txt',delimiter=',')arr
Out[12]:
array([[ 0.580052 , 0.18573 , 1.040717 , 1.134411 ], [ 0.194163 , -0.636917 , -0.938659 , 0.124094 ], [-0.12641 , 0.268607 , -0.695724 , 0.047428 ], [-1.4844132, 0.004176 , -0.744203 , 0.005487 ], [ 2.302869 , 0.200131 , 1.670238 , -1.88109 ], [-0.19323 , 1.047233 , 0.482803 , 0.960334 ]])
np.savetxt执行的是相反的操作:将数组写到以某种分隔符隔开的文本文件中。
genfromtxt跟loadtxt差不多,只不过它面向的是结构化数组和缺失数据处理。
转载地址:https://blog.csdn.net/weixin_33682804/article/details/112446199 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!