第一周 数据分析之表示
一维,二维数组的存取
一维二维存取既可以使用下面介绍的多维数组的存取方式,也可以使用这里给出的savetxt,loadtxt
由于CSV只能有效存储一维和二维的数组,而savetxt,loadtxt一般用于CSV文件的读与取,所以这两个函数用于一维二维数组的读与取
存:savetxt()
np.savetxt(frame,array,fmt='%.18e',delimeter=None)
#frame:存入的文件或字符串名
#array:需要存入的数组
#fmt:存入数据的格式,%d,%f。。。。。
#delimeter:分割字符串,默认为空格
取:loadtxt()
loadtxt(frame,dtype=np.float,delimeter=None,unpack=False)
# frame:文件或字符串名
# dtype:读入后每个元素的格式
# delimeter:分隔符,默认为空格
#unpack:默认为false,读入数据值写入一个变量;当为true时,可写入多个变量
多维数组的存取
fromfile与tofile
存
a.tofile(frame,sep='',format='%s')
#frame:文件,字符串
#sep:数据分割字符串,如果是空串,写入文件为二进制
#format:写入数据的格式
#例:
a=np.arange(100).reshape(5,10,2)
#将a以十进制类型存入b.dat文件,元素间以,分割
a.tofile(b.dat,sep=',',format='%d')
#将a以二进制形式存入c.dat,占用空间更小
a.tofile(c.dat,frat='%d')
取
利用fromfile函数将数据从文件中读出,但原来的数组维度会丢失,需要使用reshape进行变换,以下为fromfile的使用方法及示例
np.fromfile(frame,dtype=float,count=-1,sep='')
#frame:文件,字符串
#dtype:读取的数据类型
#count:读入元素个数,-1表示读入整个文件
#sep:数据分割字数串(就是数据间的分隔符号),如果是空串写入文件为二进制
#例:
c=np.fromfile(b.dat,dtype=np.int,sep=',').reshape(5,10,2)
由于存取都需要知道数据的维度,所以常常单独写一个存储维度的文件
save,savez,load
这种方法存取更为简便,会保存数组的维度信息,但文件格式是numpy自定义的文件格式
np.save(fname,array)
np.savez(fname,array)
#savez以压缩方式存储
#frame:文件名,以.npy为扩展名,压缩扩展名为.npz
#array:数组变量
np.load(fname)
#读取文件
#例:
a=np.arrage(100).rashape(5,10,2)
np.save=('a.npy',a)
b=np.load('a.npy')
随机数
python中的random库可以提供随机数,而numpy中也有类似的random子库。
numpy的random字库有很多函数,最主要的函数有以下四种:rand,randn,randint,seed
在这四种函数里,rand与randn的参数d0,d1,d2指的是维度数(比如345的三维矩阵,d=3,d1=4,d3=5),seed需要和其他函数联用,作用和随机数表类似,只是每次从相同位置开始取数,详细参见这篇文章
举个例子:
a=np.randint(100,200,(3,4))
#产生范围在100~200的3*4的随机数组
除这四个基本函数外,同样还有其他函数,如下:
一下为使用的示例:
最后一张图中,p=b/np.sum(b)可以使越大的数被抽到的概率越大,而越小的数概率越小
此外,random同样有支持各种分布的随机数函数如下:
统计函数
numpy同样提供统计类的函数,可以实现元素和,期望值,加权平均值,标准差,方差等
示例:
梯度函数
梯度:连续值之间的变化率,即斜率
例:
xy坐标轴中,等距三个X坐标对应的Y轴值:a,b,c,则b的梯度为:(c-a)/2
numpy中只有唯一一个梯度函数gradient
示例: