数据分析入门学习笔记2——2.numpy的数据存取与函数

##本文内容为北京理工大学嵩天教授在中国大学MOOC上发布的课程《python数据分析与展示》的学习笔记##

2.1数据的csv文件存取

  • 章节目录
  • 2.21[数据的csv文件存取 ]
    -将numpy中的数组写入csv文件np.savetxt
    -将csv文件重新读入到numpy中的数组np.loadtxt
  • 2.22[多维数据的存取]
    -将数据写入文件a.tofile
    -从文件中读取数据np.fromfile
    -2.23 [Numpy的随机函数]
    -一般随机函数:rand/randn/randient/seed
    -随机排列的乱序数组:shuffle/permutation/choice
    -带有分布的随机函数:uniform/normal/possion
    -2.24 [Numpy的统计函数]
    -sum/mean/avergae/std/var
    -min(max/argmin(argmax)/unravel-index/ptp/median
    -2.25 [Numpy的梯度函数]
    -gradient

2.11csv文件

csv只能有效存储一维和二维数组
np.savetxt和np.loadtxt只能有效存取一维和二维数组

  1. 将numpy中的数组写入csv文件
    np.savetxt(frame,array,fmt=’%.18e’,delimiter=None)

frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件,文件名要用" "括起。
array:存入文件的数组
fmt:希望写入文件的数据的格式,浮点型、整数型…,表示形式由savetxt定义,例如%d表示整数型;%.1f表示浮点数类型,一位小数点;
delimiter:分割字符串,默认是None,代表空格;也可使用逗号’,'分隔

  1. 将csv文件重新读入到numpy中的数组
    np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)

frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
dtype:数据类型,可选,不指定则默认转化为浮点数类型
delimiter:分割字符串,默认是None,代表空格;也可使用逗号’,'分隔
unpack:默认false,指读入数据写入一个数组,如果true,将读入属性分别写入不同变量

2.12多维数据的存取

方法一:

  1. 将数据写入文件a.tofile(frame,sep=’’,format=’%s’)

frame:文件、字符串
sep:数据分割字符串,如’,'则为用逗号隔开。如果是空串,写入文件为二进制
format:写入数据的格式

  1. 从文件中读取数据np.fromfile(frame,dtype,count=-1,sep=’’)

frame:文件、字符串
dtype:读取的数据类型,不指定则默认转化为浮点数类型
count:读入元素个数,-1代表读入整个文件
sep:数据分割字符串,如’,'则为用逗号隔开。如果是空串,写入文件为二进制

注意:使用该方法将数组写入文件后再将数组读出,会丢失数组的维度信息,需重新定义(.reshape)
如何得知原数组的维度和元素类型?
可以通过元数据文件来存储额外信息。

方法二:numpy的便捷文件存储

  1. 将数组存到文件中:
    将数组存到一个文件中:np.save(fname,array)
    将数组存到一个压缩文件中:np.savez(fname,array)

#此种方式必须需基于numpy自定义的文件格式.npy
frame:文件名,以.npy为扩展名,压缩扩展名为.npz
array:数组变量

  1. 将文件还原为数组,且保留数组原本维度:np.load(fname)
    frame:文件名,以.npy为扩展名,压缩扩展名为.npz

2.2numpy库的随机数函数
python中的random库,为一般标量参数提供随机数的相关运算
numpy中的random库,为数组提供随机数的相关运算
应用:np.random.函数名称()

函数说明
rand(d0,d1,…,dn)根据d0-dn创建随机数数组,浮点数,[0,1),均匀分布
randn(d0,d1,…,dn)根据d0-dn创建随机数数组,标准正态分布分布
randint(low[,high,shape])根据shape创建随机整数或整数数组,范围为[low,high)
seed(s)随机数种子,s是给定的种子值

np.random.rand(3),生成包含0~1之间的3个随机数的一维数组
np.random.rand(3,4,5) ,生成包含0~1之间的随机数的三个四行五列元素的数组
np.random.randint(0,10,(4.4)),创建起始数为0,终止数为10的,四行四列的二维整数数组

函数说明
shuffle(a)根据数组a的第1轴进行随机排列,改变原数组
permutation()根据数组a的第1轴产生一个新的乱序数组,不改变原数组,生成新数组
choice(a[,size,replace,p])从一维数组a中以概率p抽取元素,形成size形状(n,m)的新数组,replace表示是否可以重用元素,默认为False。eg p=a/np.sum(a)
函数说明
normal(loc,scale,size)产生具有均匀分布的数组,low为起始值,high为结束值,size形状
possion(lam,size)产生具有正态分布的数组,loc均值,scale标准差,size形状
uniform(low,high,size)产生具有泊松分布的数组,lam表随机事件发生概率,size形状

2.4numpy的统计函数

函数说明
sum(a,axis=None)根据给定轴axis计算数组a相关元素之和,axis整数或元组
mean(a,axis=None)根据给定轴axis计算数组a相关元素的期望,axis整数或元组
average(a,axis=None,weights=None)根据给定轴axis计算数组a相关元素的加权平均值。weights=[10,5,1],对元素赋重10、5、1
std(a,axis=None)根据给定轴axis计算数组a相关元素的标准差
var(a,axis=None)根据给定轴axis计算数组a相关元素的方差
#举例np.average函数In: a =np.arrange(15).rashape(3,5)
In: a
Out:array([[0,1,2,3,4],
		   [5,6,7,8,9],
		   [10,11,12,13,14]])
In: np.average(a,axis=0,wights=[10,5,1])
Out:array([2.1875,3,1875,4,1875,5.1875])
#4.1875=2*10+7*5+12*1/(10+5+1),对应轴1的第三个维度
函数说明
min(a) max(a)计算数组a中元素的最小值、最大值
argmin(a) argmax(a)计算数组a中元素最小值、最大值的降一维(扁平化)后下标(位置)
unravel_index(index,shape)根据shape将一维下标index转化为多维下标(多维位置表示,eg(0,1)…
ptp(a)计算数组a中元素最大值与最小值的差
median(a)计算数组a中元素的中位数(中值)
 # argmin(a) argmax(a)常与unrave1_index(index,shape)搭配
 # a=array([[15,14,13,12,11],
           [10,9,8,7,6],
           [5,4,3,2,1]])
In: np.argmax(a)
Out: 0
In: unravel_index(np.argmax(a),a.shape)
Out: (0,0)

2.5numpy的梯度函数
计算数组f中元素的梯度,即f为多维数组时,返回每个维度的梯度:
np.gradient(f)
(梯度:连续值之间的变化率,即斜率)

#举例:a 为array([15,3,12,13,14)]
In: np.gradient(a)
Out: array([-12.,-1.5,5.,1.,1.])
#有两侧值时:
(13-3)/2=5.
#只有一侧值时(后一减其本身除1):
(3-15)/1=-12.
(14-13)/1=1.

numpy中“轴”的定义
参考‘https://www.cnblogs.com/ElonJiang/p/11626851.html’
在numpy中,对于二维或多维数组,axis 0 是沿行(row)向下的轴,称为最外层维度。(一维数组是特例,只有一个轴(即axis=0)),axis 1 是沿列(columns)横穿的轴,称为第二层维度。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值