zoukankan      html  css  js  c++  java
  • 利用Python进行数据分析:【NumPy】

    一、NumPy:数组计算
    1、NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。
    2、NumPy的主要功能:

    # ndarray,一个多维数组结构,高效且节省空间
    # 无需循环对整组数据进行快速运算的数学函数
    # *读写磁盘数据的工具以及用于操作内存映射文件的工具
    # *线性代数、随机数生成和傅里叶变换功能
    # *用于集成C、C++等代码的工具

    3、安装方法:pip install numpy

    二、NumPy:ndarray-多维数组对象
    1、创建ndarray:np.array()
    2、ndarray是多维数组结构,与列表的区别是:
      --数组对象内的元素类型必须相同
      --数组大小不可修改
    3、常用属性:

      --T 数组的转置(对高维数组而言)
      --dtype 数组元素的数据类型
      --size 数组元素的个数
      --ndim 数组的维数
      --shape 数组的维度大小(以元组形式)
    4、常用方法

    # array.shape                         array的规格
    # array.ndim      
    # array.dtype                         array的数据规格
    # numpy.zeros(dim1,dim2)              创建dim1*dim2的零矩阵
    # numpy.arange
    # numpy.eye(n) /numpy.identity(n)     创建n*n单位矩阵
    # numpy.array([…data…], dtype=float64 )
    # array.astype(numpy.float64)         更换矩阵的数据形式
    # array.astype(float)                 更换矩阵的数据形式
    # array * array                       矩阵点乘
    # array[a:b]                          切片
    # array.copy()                        得到ndarray的副本,而不是视图
    # array [a] [b]=array [ a, b ]        两者等价
    # name=np.array(['bob','joe','will']) res=name==’bob’ res= array([ True, False, False], dtype=bool)
    # data[True,False,…..]                索引,只索取为True的部分,去掉False部分
    # 通过布尔型索引选取数组中的数据,将总是创建数据的副本。
    # data[ [4,3,0,6] ]                   索引,将第4,3,0,6行摘取出来,组成新数组
    # data[-1]=data[data.__len__()-1]
    # numpy.reshape(a,b)                  将a*b的一维数组排列为a*b的形式
    # array([a,b,c,d],[d,e,f,g])          返回一维数组,分别为[a,d],[b,e],[c,f],[d,g]
    # array[ [a,b,c,d] ][:,[e,f,g,h] ]=array[ numpy.ix_( [a,b,c,d],[e,f,g,h] ) ]
    # array.T                             array的转置
    # numpy.random.randn(a,b)             生成a*b的随机数组
    # numpy.dot(matrix_1,matrix_2)        矩阵乘法
    # array.transpose( (1,0,2,etc.) )     对于高维数组,转置需要一个由轴编号组成的元组

    三、NumPy:ndarray-数据类型

    # ndarray数据类型:dtype:
    # 布尔型:bool_
    # 整型:int_ int8 int16 int32 int64
    # 无符号整型:uint8 uint16 uint32 uint64
    # 浮点型:float_ float16 float32 float64
    # 复数型:complex_ complex64 complex128

    四、NumPy:ndarray-创建

    # array()         将列表转换为数组,可选择显式指定dtype
    # arange()        range的numpy版,支持浮点数
    # linspace()      类似arange(),第三个参数为数组长度
    # zeros()         根据指定形状和dtype创建全0数组
    # ones()          根据指定形状和dtype创建全1数组
    # empty()         根据指定形状和dtype创建空数组(随机值)
    # eye()           根据指定边长和dtype创建单位矩阵

    五、NumPy:索引和切片

    # 1、数组和标量之间的运算
    #     a+1    a*3    1//a    a**0.5
    # 2、同样大小数组之间的运算
    #     a+b    a/b    a**b
    # 3、数组的索引:
    #     一维数组:a[5]
    #     多维数组:
    #         列表式写法:a[2][3]
    #         新式写法:a[2,3] (推荐)
    #    数组的切片:
    #         一维数组:a[5:8]    a[4:]        a[2:10] = 1
    #         多维数组:a[1:2, 3:4]    a[:,3:5]        a[:,1]
    # 4、强调:与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。    【解决方法:copy()】

    六、NumPy:布尔型索引

    问题:给一个数组,选出数组中所有大于5的数。
      答案:a[a>5]
      原理:
        a>5会对a中的每一个元素进行判断,返回一个布尔数组
        布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组
    
    问题2:给一个数组,选出数组中所有大于5的偶数。
    问题3:给一个数组,选出数组中所有大于5的数和偶数。
      答案:
         a[(a>5) & (a%2==0)]
         a[(a>5) | (a%2==0)]
    
    # import numpy as np
    # a = np.array([1,2,3,4,5,4,7,8,9,10])
    # a[a>5&(a%2==0)]  #注意加括号,不叫括号错误,如下
    # 输出:array([ 1,  2,  3,  4,  5,  4,  7,  8,  9, 10])
    # a[(a>5)&(a%2==0)]
    # 输出:array([ 8, 10])

    七、NumPy:花式索引*

    问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。
    答案:a[[1,3,4,6,7]]
    
    问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。
    答案:a[:,[1,3]]

    八、NumPy:通用函数
    通用函数:能同时对数组中所有元素进行运算的函数

    【一元函数】:abs, sqrt, exp, log, ceil, floor, rint, trunc, modf, 
    # numpy.sqrt(array)                   平方根函数   
    # numpy.exp(array)                    e^array[i]的数组
    # numpy.abs/fabs(array)               计算绝对值
    # numpy.square(array)                 计算各元素的平方 等于array**2
    # numpy.log/log10/log2(array)         计算各元素的各种对数
    # numpy.sign(array)                   计算各元素正负号
    # numpy.isnan(array)                  计算各元素是否为NaN
    # numpy.isinf(array)                  计算各元素是否为NaN
    # numpy.cos/cosh/sin/sinh/tan/tanh(array) 三角函数
    # numpy.modf(array)                   将array中值得整数和小数分离,作两个数组返回
    # numpy.ceil(array)                   向上取整,也就是取比这个数大的整数 
    # numpy.floor(array)                  向下取整,也就是取比这个数小的整数
    # numpy.rint(array)                   四舍五入
    # numpy.trunc(array)                  向0取整 
    # numpy.cos(array)                       正弦值
    # numpy.sin(array)                    余弦值 
    # numpy.tan(array)                    正切值 
    
    【二元函数】:add, substract, multiply, divide, power, mod,
    # numpy.add(array1,array2)            元素级加法
    # numpy.subtract(array1,array2)       元素级减法
    # numpy.multiply(array1,array2)       元素级乘法
    # numpy.divide(array1,array2)         元素级除法 array1./array2
    # numpy.power(array1,array2)          元素级指数 array1.^array2
    # numpy.maximum/minimum(array1,aray2) 元素级最大值
    # numpy.fmax/fmin(array1,array2)      元素级最大值,忽略NaN
    # numpy.mod(array1,array2)            元素级求模
    # numpy.copysign(array1,array2)       将第二个数组中值得符号复制给第一个数组中值
    # numpy.greater/greater_equal/less/less_equal/equal/not_equal (array1,array2)
    # 元素级比较运算,产生布尔数组
    # numpy.logical_end/logical_or/logic_xor(array1,array2)元素级的真值逻辑运算

    九、补充知识:浮点数特殊值
    1、浮点数:float
    2、浮点数有两个特殊值:
      --nan(Not a Number):不等于任何浮点数(nan != nan)
      --inf(infinity):比任何浮点数都大
      --在数据分析中,nan常被表示为数据缺失值
    2、NumPy中创建特殊值:np.nan np.inf
    3、在数据分析中,nan常被用作表示数据缺失值
    既然nan连自己都不相等,那么怎么判断是不是NAN呢?
    用a==a 只要返回False就能判断

    十、NumPy:数学和统计方法

    常用函数:
    # sum    求和
    # cumsum 求前缀和
    # mean    求平均数
    # std    求标准差
    # var    求方差
    # min    求最小值
    # max    求最大值
    # argmin    求最小值索引
    # argmax    求最大值索引

    十一、NumPy:随机数生成
    随机数生成函数在np.random子包内

    常用函数:
    # rand    给定形状产生随机数组(0到1之间的数)
    # randint    给定形状产生随机整数
    # choice    给定形状产生随机选择
    # shuffle    与random.shuffle相同
    # uniform    给定形状产生随机数组
  • 相关阅读:
    在UITableView顶部制作简单的UISegmentControl实例方法
    iOS9 适配网络请求,适配分享失败,适配无法正常跳转到客户端
    iOS页面切换动画实现方式。
    Springboot-Dockerfile指令
    Springboot-Docker-Dockerfile
    Springboot-Docker-1
    SpringBoot-Security
    SpringBoot-MongoDB
    SpringBoot-RabbitMQ
    SpringBoot-Memcached
  • 原文地址:https://www.cnblogs.com/liwei1153300111/p/9206422.html
Copyright © 2011-2022 走看看