python数据分析(二)--Numpy

2017-12-20  本文已影响0人  五秋木
  1. n维数组对象ndarray
  2. 两部分组成--数组内容和数组属性(数组类型和数组维度)
  3. 定义一个数组方法:a=numpy.array((1,1,1))或者a=numpy.array([1,1,1])生成一个ndarray的数组a,ndarray在程序中的别名是array
  4. ndarray对象的属性
  1. ndarray的元素类型
  1. ndarray数组创建
  1. ndarray的数组操作
  1. 数组运算

    1. 数组与标量运算:作用于数组的每一个元素a = a / a.mean()
    2. 一元函数:np.abs(x)、np.fabs(x)、np.sqrt(x)、np.square(x)、np.log(x)、np.log10(x)、np.log2(x)、np.ceil(x)(不超过元素的整数值)、np.floor(x)(小于这个元素的最大整数值)、np.rint(x)(四舍五入)、np.modf(x)(小数部分和整数部分)、np.cos(x)、np.cosh(x)、np.exp(x)、np.sign(x)
    3. 二元函数:加减乘除乘方、np.maximum(x,y) np.fmax()
      np.mod(x,y) np.copysign(x,y)(将数组y各元素的符号复制给数组x对应元素) 布尔型运算
  2. adarray数组与csv文件写入与读出:
    注意:csv文件只能有效存取一维数组和二维数组

    • 写入到csv文件中
      np.savetxt(frame,array,fmt='%.18e',delimiter=None)
      frame:文件、字符串或产生器,可以是.gz或者.bz2的压缩文件,文件名
      array:存入文件的数组
      fmt:写入文件的格式:例如:%d %.2f %.18e
      delimiter:分割字符串
      例如:
      a = np.arange(100).reshape(5,20)
      np.savetxt('a.csv',a,fmt='%d',delimiter=',')
      文件保存在当前文件目录下,我的是在C盘的用户目录下,可以更改
    • 从csv文件中读出
      np.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False)
      frame:文件名,可以是压缩文件.gz或者.bz2
      dtype:数据类型
      delimiter:分割字符串,默认位任何空格
      unpack:true,读入属性将分别写入不同变量
  3. 多维数组的存取
    注意:使用的时候要知道存入文件时数组的维度和元素类型

    1. 写到文件中:
      a.tofile(frame,sep='',format='%s')
      frame:文件、字符串
      sep:数据分割字符串、如果为空串,写入文件为二进制。
      format:写入数据的格式
      例如:
    a.tofile('b.dat',sep=',',format='%d') //此时文件中为一串有逗号分割的数字,无分组信息
    
    1. 从文件中读文件
      np.fromfile(frame,dtype=float,count=-1,sep='')
      count:读入元素的个数,-1表示读入整个文件
      sep:数据分割字符串、如果为空串,读取的文件为二进制。
      例如:
      c=np.fromfile('b.dat',dtype=np.int,sep=',') //此时c为一个一维数组
      可以使用reshape变为多维数组。
  4. 便捷的文件存取
    np.save(fname,array) //fname中以.npy为扩展名
    np.savez(fname,array) //fname中以.npz为压缩扩展名
    np.load(fname)

  5. 随机数函数--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是给定的种子值
    a=np.random.randn(3,4,5)  //生成3维矩阵,维数分别是3,4,5
    b=np.random.randint(100,200,(3,4))
    
    • shuffle(a) 根据数组a的第一轴进行随机排序,改变数组a
    • permutation(a) 根据数组a的第一轴进行随机排序,不改变数组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形状
  6. 统计函数

    • sum(a,axis=None) :给定轴axis计算和,axis整数或者元组
    • mean(a,axis=None):给定轴axis计算期望
    • average(a,axis=None,Weight=None) 给定轴axis计算数组a计算相关元素的加权平均值
    • std(a,axis=None) 计算数组a相关元素的标准差
    • var(a,axis=None) 计算数组a相关元素的方差
    • min(a)
    • argmin(a) 计算数组a中元素最小值、最大值降一维后下标
    • unravel_index(index,shape) 根据shape将一维下标index转换成多维下标
    • ptp(a) 计算数组a中元素最大值和最小值的差
    • median(a) 计算数组a中元素的中位数(中值)
  7. 梯度函数--及斜率
    np.gradient(a):返回元素的梯度,当f为多维时,返回每个维度梯度

  8. 图像的数组表示
    图像:RGB色彩表示
    PIL库:具有强大图像处理能力的第三方库
    使用:from PIL import Image
    Image是PIL库中代表一个图像的类
    im=np.array(Image.open("path+fileName"))
    print(im.shape,im.dtype)
    Image.open("E://Desktop//0.jpg").convert('L')将图像转化为灰度图

上一篇 下一篇

猜你喜欢

热点阅读