python numpy库数组的存取

将数组以二进制格式保存

数组可以以未压缩的原始二进制格式保存在扩展名为.npy的文件中的,npy文件中会在第一行保存数组的相关信息

npz是一个可以保存多个数组的归档文件,该文件可以是未压缩的,也可以是压缩的。解压npz文件可以发现多个数组对应的npy文件。

当使用load方法去打开npz文件时,会返回一个类似字典的对象,可以用访问字典键值的方式去访问数组。

>>>#将数组保存在x.npy文件中
>>> np.save('x.npy',np.arange(4))
>>> np.load('x.npy')
array([0, 1, 2, 3])
>>>#---------------------------------------------
>>>#将多个数组保存在npz文件中
>>> np.savez('ab.npz',a=x1,b=x2)
>>>#加载npz文件,返回一个类似字典的对象
>>> arch=np.load('ab.npz')
>>> arch['a']
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
>>> arch['b']
array([0, 1, 2])
a = np.arange(100000).reshape(1000, 100)
a[10: 300] = 0
b = np.arange(100000).reshape(1000, 100)

np.save('a.npy', a)  # 文件大小:391KB
np.save('b.npy', b)  # 文件大小:391KB
# 保存到不压缩的npz文件
np.savez('ab_uncompressed.npz', a=a, b=b)  # 文件大小:782KB
# 保存到压缩的npz文件
np.savez_compressed('ab_compressed.npz', a=a, b=b)  # 文件大小:232KB

 

 

 

 

 

存取文本文件(一维或者二维的数组)

np.savetxt(frame,array,fmt='%.18e',delimiter=None)

frame:文件名

array:写入文件的数组

fmt:写入文件的格式,比如%d,%.2f

delimter:分隔符

 

np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)

frame:文件名

dtype:数据类型

delimter:分隔符

unpack:读入属性写入不同变量

 

data.csv

1234
5678
56710

 

a.csv

0123
4567
891011

 

>>>#加载data.csv
>>> np.loadtxt('data.csv',delimiter=',')
array([[  1.,   2.,   3.,   4.],
       [  5.,   6.,   7.,   8.],
       [  5.,   6.,   7.,  10.]])
>>>#读到csv文件中
>>> a=np.arange(12).reshape(3,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> np.savetxt('a.csv',a,fmt='%d',delimiter=',')

 

存取二维以上的数组

写入数组:

使用该方法会丢失数组的维度信息,若要保存数组的信息,需要用npy文件

a.tofile(frame,sep='',format='%s')

a:数组

frame:文件

sep:分隔符,如果是空串,则写入文件形式为二进制

format:写入文件格式

>>> a=np.arange(100).reshape(5,10,2)
>>>#将数组a写入a.txt,分隔符隔开,不会用换行体现维度
>>> a.tofile('a.txt',sep=',')
>>>#将数组以二进制形式存入b,txt
>>> a.tofile('b.txt')


a.txt:

0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,

31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,

58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,

85,86,87,88,89,90,91,92,93,94,95,96,97,98,99

 

b.txt:

                      
        
                                            !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   

 

读取解析数组:

np.fromfile(frame,dtype=float,count=-1,sep='')

frame:文件

dtype:读取的数据类型

count:读入元素的个数,-1表示全部

sep:分隔符,如果是空串,则表示二进制形式

 

>>>#读取矩阵a
>>> np.fromfile('a.txt',dtype=np.int,sep=',')
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
       34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
       51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
       68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
       85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])
>>> np.fromfile('a.txt',dtype=np.int,sep=',').reshape(5,10,2)
>>>#读取二进制形式的矩阵a
>>> np.fromfile('b.txt',dtype=np.int)
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
       34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
       51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
       68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
       85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99])

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值