python数据分析与展示 – 第一周/单元二/numpy数据存取与函数

English Version: https://today2tmr.com/en/2017/08/29/python-data-storage-and-functions/

数据的CSV文件存取

  • CSV(Comma-Separated Value,逗号分隔值)文件
  • CSV是一种常见的文件格式,用来存储批量数据。
  • 存取一维、二维数据

写入CSV

  • np.savetxt(frame, array, fmt='%.18e', delimiter=None)
    • frame: 文件、字符串或产生器,可以是.gz或.bz2的压缩文件。
    • array: 存入文件的数组。
    • fmt: 写入文件的格式,例如:%d, %2.f, %.18e
    • delimiter: 分隔字符串,默认是任何空格,CSV中为逗号


     

读入文件

  • np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)
    • frame: 文件、字符串或产生器,可以是.gz或.bz2的压缩文件。
    • dtype: 数据类型,可选。
    • delimiter: 分隔字符串,默认是空格。
    • unpack: 默认写入一个数组,如果True,读入属性分别写入不同变量。

     

CSV文件的局限性

  • 只能有效存储一维和二维数据
  • np.savetxtnp.loadtxt只能存储和读取一维、二维数据

多维数据的存取

存储文件

  • a.tofile(frame, sep='', format='%s')
    • frame: 文件,字符串。
    • sep: 数据分隔字符串,如果是空串,写入文件为二进制。
      • 二进制文件比文本文件占用更小的空间
    • format: 写入数据的格式。

     

     

读取文件

  • a.fromfile(frame, dtype=np.float, count=-1, sep='')
    • frame: 文件、字符串
    • dtype: 读取的数据类型
    • count: 读入元素个数,-1表示读入整个文件
    • sep: 数据分隔字符串,如果是空串,读入二进制文件
    •  

      需知道原数据维度和类型

    • .tofile()np.fromfile()与配合使用
    • 可通过元数据文件来存储额外信息

NumPy的便捷文件存取

  • np.save(frame, array)np.savez(frame, array)
    • frame: 文件名,以.npy为扩展名,压缩扩展名为.npz
    • array: 数组变量
  • np.load(frame)
  • 元数据被写入第一行
  • 需要数据交互和对接时使用tofilefromfile
  • 仅在NumPy处理数据时可以np.savenp.load

 

NumPy的随机数函数

  • 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是给定的种子值

 

  • 重复设置随机数种子和获得相同随机数
函数 说明
shuffle(a) 根据数组a的第0轴进行随机排列,改变数组a
permutation(a) 根据数组a的第0轴进行乱序排列,不改变数组a并生成新数组
choice(a[,size,replace,p]) 从一维数组a中以概率p抽取元素,形成size形成新数组,replace表示是否可以重用元素,默认为True

 

 

函数 说明
uniform(low,high,size) 产生均匀分布的数组,low起始值,high结束值,size形状
normal(loc,scale,size) 产生正太分布的数组,loc均值,scale标准差,size形状
poisson(lam,size) 产生泊松分布的数组,lam随机事件发生率,size形状

 

NumPy的统计函数

函数 说明
sum(a,axis=None) 根据给定轴axis计算数组a相关元素之和,axis整数或元组
mean(a,axis=None) 根据给定轴axis计算数组a相关元素的期望,axis整数或元组
average(a,axis=None,weights=None) 根据给定轴axis计算数组a相关元素的加权平均值
std(a,axis=None) 根据给定轴axis计算数组a相关元素的标准差
var(a,axis=None) 根据给定轴axis计算数组a相关元素的方差

 

函数 说明
min(a) max(a) 计算数组a中元素最小值、最大值
argmin(a) argmax(a) 计算最小最大值的降为一维后的下标
unravel_index(index,shape) 根据shape将一维下标index转换为多维下标
ptp(a) 计算最大值与最小值的差
median(a) 计算数组中位数

 

NumPy的梯度函数

  • np.gradient(f)
  • 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度
  • 梯度:连续值之间的变化率,即斜率。
  • XY坐标轴连续三个X坐标对应的Y轴值: a,b,c,其中,b的梯度是: (c-a)/2
    • 两侧:(后一个值-前一个值)/二值距离
    • 一侧:当前值-前一个值 或 后一个值-当前值

 

  • 梯度可以发现图像、声音的边缘

单元小结

  • 一二维数据的存取: CSV
    • np.loadtxt()
    • np.savetxt()
  • 多维数据的存取
    • a.tofile()
    • np.fromfile()
    • np.save()
    • np.savez()
    • np.load()
  • 随机函数
    • np.random.rand()
    • np.random.randn()
    • np.random.randint()
    • np.random.seed()
    • np.random.shuffle()
    • np.random.permutation()
    • np.random.choice()
  • 统计函数
    • np.sum()
    • np.mean()
    • np.average()
    • np.std()
    • np.var()
    • np.median()
    • np.min()
    • np.argmin()
  • 梯度函数
    • np.gradient()

One Reply to “python数据分析与展示 – 第一周/单元二/numpy数据存取与函数”

Leave a Reply

Your email address will not be published.