zoukankan      html  css  js  c++  java
  • Python扩展包

    Python扩展包

    1、NumPy

    NumPy提供了多种python本身不支持的多种集合,有list、ndarray和ufunc。

    • list

      更加灵活的数组,支持多维,数据可不同型,存储数量远大于array。array只支持同型数据,空间有限。

    • ndarray

      多维数组类,方便操纵多维数组,数据必须同型,操纵高效。

    • ufunc

      对数组进行高效处理的函数。主要用于高维数组的访问,底层使用c/c++实现。

    1.1 构造数组

    import numpy as np 
    # 一维数组
    arr = np.array([2,0,1,5,8,3], dtype=np.float64)
    # 二维数组
    arr = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.float64)
    

    1.2 max函数

    # 提取数组最大值
    arr.max()
    

    1.3 min

    arr.min()
    

    1.4 sort

    arr.sort()
    

    1.5 数组形状

    # 属性
    arr.shape
    # 内置函数
    type(a)
    

    1.6 切片

    切片本质上就是去数组的子集。

    # 全部元素
    arr[:]
    # 开始至导数第二个元素
    arr[:-2]
    # 最后的两个元素
    arr[-2:]
    # 第一个元素
    arr[:1]
    
    # 二维数组切片
    arr[:][:]
    # 
    arr[1][:-2]
    

    1.7 数学函数

    Numpy封装了很多数学函数。

    • 正弦函数

      np.sin(np.pi / 6)
      
    • zeros函数

      # 初始化所有元素为0。
      np.zeros((3,4) ,dtype=np.float64), 
      
    • ones

      # 初始化所元素为1
      np.ones((3,4) ,dtype=np.float64)
      

    1.8 数组与标量值计算

    1. 同型数组相乘就是对应元素相乘

      arr1 = np.array([[1,2,3],[4,5,6]])
      arr2 = arr1 * arr1
      # 结果
      [
      	[1,4,9] ,
          [16,25,36]
      ]
      
    2. 同型数组相减对应元素相减

      arr1 = np.array([[1,2,3],[4,5,6]])
      arr2 = arr1 - arr1
      # 结果
      [
      	[0,0,0] ,
          [0,0,0]
      ]
      
    3. 数组的倒数对应每个元素的倒数

      arr1 = np.array([[1,2,3],[4,5,6]])
      arr2 = 1 / arr1
      # 结果
      [
      	[1,0.5,0.33333] ,
          [0.25,0.2,0.166666]
      ]
      

    1.9 布尔索引

    # 名称数组
    names = np.array(['Bob','Joe','Bob','Joe'])
    names == 'Bob'
    # 结果
    array([ True, False,  True, False])
    

    1.10 随机数组

    # 随机数组
    arr = np.random.randn(4,4)
    # 结果
    array([[-0.63024369, -0.46411696,  0.39215462, -1.59666929],
           [-0.66560699, -0.39085017,  1.44804687, -0.32239144],
           [-0.23065156, -2.05660209, -0.59777198,  0.36496691],
           [-2.21541391,  1.61258062, -0.43754217, -0.58834426]])
    
    # 同布尔型数组组合
    arr[names=='Bob']
    array([[-0.63024369, -0.46411696,  0.39215462, -1.59666929],
           [-0.23065156, -2.05660209, -0.59777198,  0.36496691]])
    

    1.11 空数组

    空数组赋值,是对每个元素都进行赋值。

    # 空数组,里面没有任何内容
    arr = np.empty((5,4))
    for i in range(5):
        arr[i] = i
    
    # 结果
    array([[0., 0., 0., 0.],
           [1., 1., 1., 1.],
           [2., 2., 2., 2.],
           [3., 3., 3., 3.],
           [4., 4., 4., 4.]])
    

    1.12 通用函数

    1. np.arange

      arr = np.arange(10)
      # 结果
      array([1,2,3,4,5,6,7,8,9])
      
    2. np.sqrt

      np.sqrt(array([1,4,9]))
      # 结果
      array([1,2,3])
      
    3. np.random.randn(8)

      arr = np.random.randn(8)
      # 结果
      array([ 0.67089833,  0.29382861,  0.83511179, -0.44452724,  0.12621945,
             -0.7167797 , -0.42452128, -0.63488661])
      
    4. np.maximum(a,b)

      x = np.array([1,2,3])
      y = np.array([5,0,5])
      np.maximum(x,y
      # 结果
      array([5, 2, 5])
      
    5. 一元函数

      函数 解释
      abs 绝对值
      exp 指数
      ceil ceil
      floor floor
      cos、sin、cosh、sinh 普通型和双曲型三角函数
      arccos 反余弦
      arcsin 反正弦
    6. 二元函数

      函数 解释
      add
      multiply
      divide、floor_divide

    2、pandas

    pandas 是panel data的之意。它是Python最强大的数据分析和探索工具,因金融数据分析工具而开发,支持类似SQL的数据增删改查功能,支持时间序列分析,灵活处理缺失数据。pandas有两种数据类型,Series和DataFrame。

    2.1 Series

    Series是一列数据,相当于表格中的一列。

    s1 = Series([1,2,3,4])
    # key是索引列
    s1 = Series({'a':100 , 'b':200 , 'c':300 ,'d':400})
    # 所有值
    s1.values
    # 所有索引
    s1.index
    # 通过索引访问
    s1['b']
    

    2.2 DataFrame

    数据框是二维表格,类似于关系型数据库中的表。

    # 构造数据
    data = {"name":["yahoo","google","facebook"], "marks":[200,400,800], "price":[9, 3, 7]}
    # 数据全部列
    df1 = DataFrame(data)
    # 使用指定的列
    pds=pd.DataFrame(data,columns=['name','price','marks'])
    

    数据框结构如下:

    name marks price
    yahoo 200 9
    google 400 3
    facebook 800 7
  • 相关阅读:
    关于Class.forName(String str)的理解
    [精][转]Java equals()与hashCode()
    下载开源矿工
    生成自己定义的.pfx数字证书
    复杂处理如何不用游标以加快速度
    使用OpenRowSet操作Excel
    添加UtraEdit/Cmd的右键菜单
    VS2008项目使用Mage手动创建Clickonce包
    ClickOnce, Mage and Visual Studio 2008 (includes fix)
    php对特殊字符的处理
  • 原文地址:https://www.cnblogs.com/xupccc/p/9721341.html
Copyright © 2011-2022 走看看