zoukankan      html  css  js  c++  java
  • Python数据分析与展示[第一周]

    ipython 中的问号

    获得相关的描述信息

    %run 系统文件

    执行某一个文件

    ipython的模式命令  

    %magic 显示所有的魔术命令

    %hist    命令历史输入信息

    %pdb    异常发生后自动进入调试器

    %reset  删除当前命名空间中的全部变量或名称

    %who   显示Ipython 当前命名空间中的已经定义的变量

    %time statemnent 给出代码执行时间

    %timeit statement 多次实行代码,计算平均执行时间

    基本读取数据的方法

    维度:数据的组织形式

    一维数据 列表 数组

    一组数据的结构 列表中 数据类型可以不同,数组类型相同

    二位数据 多个一维数据的组合形式

    多维数据 在性维度上的扩展形成

    高维数据 字典

    一位数据 列表(有序) 集合(无序)

    高维数据 字典形式或数据表示格式(json xml yaml)

    numpy

    np.ndarray

    import numpy as np

    使一维向量像变量 

    一个维度数据类型往往相同 节省内存和时间

    ndarray 

    实际数据

    描述数据的元数据

    下表从0开始

    轴axis 数据的维度

    秩rank 轴的数量

    ndarray 对象的属性

    .ndim 秩轴的数量 或 维度的数量 

    .shape 对象的尺度 n行m列

    .size   对象元素的个数

    .dtype 对象的元素类型

    .itemsize 为各元素的大小以字节为单位

    ndarray的元素类型

    bool      

    intc 32或64 

    int p  用于索引的整数 与c中的 sszie_t 一致 int32 或 int64

    int8 int16 int32 int64

    uint8-16-32-64

    float16-32-64/

    complex64           实部虚部都是32位浮点数类型

    complex128         实部虚部都是64位浮点数类型

    当每一个元素行传不相同的时候 非同质对象 尽量避免使用

    生成ndarray 的方法 

    1从列表元组中创建

    np.array(     ,dtype=np.float32) 可以指定类型

    2使用函数创建

    np.arange()  元素从0到n-1

    np.ones(shape)     根据shape 生成一个全1的类型,shape 是一个元组类型

    np.zeros(shape)    同上

    np.full(shape,val)        生成权威val的

    np.eye(n)   n阶的单位矩阵

    np.ones_like(a) 形状相似

    np.zeros_like(a)

    np.zeros_like(a,val)

    np.linspace(1,10,4, endpoint=False) 起始位置 种质元素 包含几个元素

    np.logspace(1,2,base=4)  4^1 - 4^2 的等比数列

    np.concatenate((a,b)) 将两个nparray合并

    ndarray的方法

    .reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变

    .resize(shape)    修改原数组(原数组改变)   resize 不接受负数(-1) reshape 可以

    .swapaxes(ax1,ax2) 对n维中的两个维度进行调换

    .flatten()               对数组进行降维,返回一个一维数组 ,原数组不变

    ndarray的类型变换 

    new_a=a.astype(new_type)  // np.int 具体是那种类型有py自行决定

    (不改变原数据)创建新的数组,拷贝

    数组转列表 

    .tolist()

    //慢得多

    数组操作 索引切片

    a[1:4:2]    开始编号:终止编号:步长

    不含终值

    a[0,1,2] 这是可以的

    a[-1,-2,-3]这是表示从右向左的索引方式

    a[:,1,-3]

    a[:,1:3,:]

    a[:,:,::2] 最后一个维度以2为步长

    ndarray的运算

    标量运算

    1数组中的每一个元素都与之进行运算

    a=a/a.mean()

    标量元素

    np.abs(x) 

    np.fabs()

    np.sqrt()

    np.squar()

    np.log() np.log10() np.log2()

    np.ceil() np.floor() 

    np.rint() 四舍五入

    np.modf() 将数组的小数和整数分别以两个独立的数组形式返回

    np.cos cosh sin sinh tan tanh 

    np.exp()

    np.sign()

    +-*/**

    np.maximum(x,y)  np.fmax() 

    np.minimum(x,y)   np.fmin() 求对应的最大值最小值

    np.mod(x,y)   元素及的模运算

    np.copysign(x,y)   将y元素的符号复制给对应数组x中的对应元素

    ><==!=产生bool型的数组

    数据的读取 csv

    写入csv 

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

    frame 文件字符串或产生器,可以使.gz或.bz2的压缩文件

    array  要储存的数组

    fmt 写入文件的格式 

    delimiter 分割字符串默认是任何空格(更改成,才是csv文件)

    例:

    np.savetxt('a.csv',a,fmt=‘%d',delimiter=',')

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

    frame 读入的文件 ,也可以是压缩文件.gz .bz2 

    dtype 数据的类型  np.float/np.int 

    delimiter  分割字符串 默认是空格

    unpack    如果True 读入属性将分别写入不同的变量

    例:

    b=np.loadtxt("a.csv",demiliter=',')

    局限性

    只能存取读取一维和二维数据

    多维数据的存取

    np.一些方法

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

    frame 文件 字符串 

    sep 分割字符不给的话就是二进制写入

    format 存储存储的格式

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

    frame 文件字符串

    dtype 读取的数据累心和

    count 读入的元素个数 -1 表示读入整个文件

    sep空为二进制

    例:

     a.tofile("b.dat",sep='',format='%d')

    c=np.fromfile('b.dat',dtype=np.int,sep='').reshape(10,5,2)

    存入的是一个无维度信息的数据

    读出的是一维数组 需要人为的更改维度信息

    tofile 和 fromfile 需要相结合使用

    通过元数据文件来储存额外的信息

    np的便捷文件存取

    np.save(fname,array)  

    frame 以npy为扩展名 压缩扩展名为npz 

    array  数组变量 

    np.load(fname) 

    frame 文件名格式同上

    numpy的随机函数

     np.radom.*

    .rand(d0,d1,...,dn) 【0-1)之前的浮点数均匀分布

    .randn(d0,d1,...dn) 根据d0-dn 创建随机数数组,标准正态分布 //这还比较奇怪,居然不是接受一个shape 

    .randint(low,[,high,shape])根据shaoe 创建随机整数或证书驻足 范围是low,high ,均匀分布

    .seed(s) 随机数种子  s 是给定的种子值

    .shuffle(a)  按照数组a的第一轴进行随机排列,改变数组a 

    .permutation(a) 根据数组a的第一轴产生一个新的乱序数组,不改变数组a

    .choice(a[,size,replace=False,p])   从一维数组a中以概率p抽取元素,形成size 行传的新数组

    .replace 表示是否可以重用元素 默认为true(可以重复抽取) 

    np.random.choice(b,(3,2),p=b/np.sum(b))

    //元素越大概率越大的方式

    .uniform(low,high,size) 产生均匀分布的数组

    .normal(loc,scale,size)  loc 均值 sclae 标准差 

    .possion(lam,size)   lam是随机事件发生的概率 

    numpy 的统计函数 

    np.sum(a,axis=None) 求和运算 axis指点是哪个轴

    np.mean(a,axis=None ) 求期望 

    np.average(a,axis=None,wright=None) 加权平均值 

    np.std(a,axis) 求标准差 

    np.bar(a, axis)   求方差

    例:

    a= [[ 0 1 2 3 4]

          [ 5 6 7 8 9]

       [10 11 12 13 14]

         ]

    np.avarage(a,axis=0,weights=[10,2,1])

     2.1875 3.1875 4.1875 5.1875 6.1875

    min(a) max(a) 

    argmin() ragmax() 记录最小值最大值得小标 片平滑成一维之后的下表 

    unravel_index(index,shape) 根据 shape 将一维下表转化成多维下标

    ptp()           计算最大值与最小值得差

    median        只算中位数 

    例:

     np.unravel_index(np.argmax(b),b.shape)   

    得到最大值的多维下标

    numpy的梯度函数 

    np.random.gradient(f) 

    计算数组元素中的梯度 当f为多维是,返回每个维度的梯度

    梯度分

    存在两侧值

    只有一侧值 

    计算

    二维数组则返回两个数组表示分别的梯度 

    返回这个元素在这层维度的梯度

    实例: 图像的手绘表示

    PIL 库 第三方库 处理图像的库

    python image library 

    from PIL import Image 

    表示一个Image类 一个图像 

    from PIL import Image 

    import numpy as np

    im=np.array(Image.open("D:/pycodes/beijing.jpg")) 

    print(im.shape,im.dtype) 

    >>(669,1012,3) uint 

    RGB 值

    图像的变换

    读入图像 获得RGB值 修改后保存为新的图片

    a=np.array(Image.open("asdsd"))

    b=[255,255,255] -a 

    im=Image.fromarray(b.astype('uint8'))

    im.save("asas") 

    计算像素补值?

    np.array(Image.open("asasas") .convert("L") ) 

    convert 方法对应打开元素的灰度值

    图像的手绘效果

    特征:

    1.黑白灰色

    2.边界线条重

    3.相同或相近色彩趋于白云

    4.略有光源效果

  • 相关阅读:
    IT面试技巧(2)
    mySQL学习入门教程——4.内置函数
    weight decay (权值衰减)
    c++读取文件目录
    caffe 卷积层的运算
    一个物体多个标签的问题
    python caffe 在师兄的代码上修改成自己风格的代码
    caffe 细节
    vim让一些不可见的字符显示出来吧
    python 读写文件
  • 原文地址:https://www.cnblogs.com/sfzyk/p/6696333.html
Copyright © 2011-2022 走看看