扩展库scipy

部署运行你感兴趣的模型镜像

扩展库SciPy

  • 特征
    • 基于Python的软件生态系统
    • 开源第三方
    • 主要为数学,科学和工程服务
  • 核心库:Numpy SciPy library Matplotlib IPython Sympy pandas
  • 官网:scipy.org 资源丰富
  • SCIPy中的数据结构
    1. ndarray N维数组
    2. Series 变长字典
    3. DataFrame 数据框

NumPy

  1. 特征

    • 强大的ndarray对象和ufunc函数

    • 精巧的函数

    • 适合线性代数和随机数处理等科学计算

    • 有效的通用多维数据 可定义为任意数据类型

    • 无缝对接数据库

      import numpy as np
      
      aArray=np.ones((4,4))
      
      aArray
      Out[3]: 
      array([[1., 1., 1., 1.],
             [1., 1., 1., 1.],
             [1., 1., 1., 1.],
             [1., 1., 1., 1.]])
      
      from scipy import linalg  #导入scipy核心库中和线性代数有关模块
      
      arr=np.array([[1,2],[3,4]])
      
      linalg.det(arr)  #计算行列式
      Out[6]: -2.0
      
      linalg.det(aArray)
      Out[7]: 0.0
      

Matplotlib

  1. 特征
    • 基于NumPy
    • 二维绘图库 简单快速地生成曲线图 直方图和散点图等形式的图
    • 常用的pyplot是一个简单提供类似MATLAB接口的模块

pandas

  1. 特征
    • 基于SciPy NumPy
    • 高效的SeriesDataFrame数据结构
    • 强大的可扩展数据操作与分析的Python
    • 高效处理大数据集的切片等功能
    • 提供优化库功能读写多种文件格式 如CVS HDF5

ndarray数据结构

  1. python中的数组

    1. 形式
      1. listtuple等序列数据结构结构表示的数组
      2. array模块 (非内置模块 不支持多维)
        • 通过array函数创建数组 ,array.array('B',range(5))
        • 提供append insert read等方法
  2. ndarray

    • 特点

      • N维数组
      • NumPy中基本的数据结构
      • 所有元素是同一种类型 不像列表那样包含多类但存大量指针和空间
      • 别名为array
      • 利于节省内存和提高CPU计算时间
      • 有丰富的函数
    • 基本概念

      • 维度 成为轴 轴的个数称为秩
      • 基本属性
        • ndarray.ndim
        • ndiarray.shape 维度
        • ndarray.size 元素总个数
        • ndarray.dtype 元素类型
        • ndarray.itemsize 元素字节大小
    • 创建与使用

      import numpy as np
      
      aArray=np.array([1,2,3])
      
      aArray
      Out[3]: array([1, 2, 3])
      
      bArray=np.array([(1,2,3),(4,5,6)])
      
      bArray
      Out[5]: 
      array([[1, 2, 3],
             [4, 5, 6]])
      
      np.arange(1,5,0.6)
      Out[7]: array([1. , 1.6, 2.2, 2.8, 3.4, 4. , 4.6])
      
      np.random.random((2,2))
      Out[8]: 
      array([[0.52820866, 0.42113216],
             [0.48049641, 0.5325641 ]])
      
      np.linspace(1,2,10,endpoint=False)
      Out[9]: array([1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9])
      
      np.ones([2,3])
      Out[10]: 
      array([[1., 1., 1.],
             [1., 1., 1.]])
      
      np.zeros([2,3])
      Out[11]: 
      array([[0., 0., 0.],
             [0., 0., 0.]])
      
      np.fromfunction(lambda i,j:(i+1)*(j+1),(9,9))
      Out[12]: 
      array([[ 1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.],
             [ 2.,  4.,  6.,  8., 10., 12., 14., 16., 18.],
             [ 3.,  6.,  9., 12., 15., 18., 21., 24., 27.],
             [ 4.,  8., 12., 16., 20., 24., 28., 32., 36.],
             [ 5., 10., 15., 20., 25., 30., 35., 40., 45.],
             [ 6., 12., 18., 24., 30., 36., 42., 48., 54.],
             [ 7., 14., 21., 28., 35., 42., 49., 56., 63.],
             [ 8., 16., 24., 32., 40., 48., 56., 64., 72.],
             [ 9., 18., 27., 36., 45., 54., 63., 72., 81.]])
      
      x=np.fromfunction(lambda i,j:(i+1)*(j+1),(9,9))
      
      x.ndim
      Out[14]: 2
      
      x.shape
      Out[15]: (9, 9)
      
      x.size
      Out[16]: 81
      
      bArray
      Out[18]: 
      array([[1, 2, 3],
             [4, 5, 6]])
      
      print(bArray[1])
      [4 5 6]
      
      print(bArray[0:2])  #切片 选择0和1行
      [[1 2 3]
       [4 5 6]]
      
      print(bArray[:,[0,1]]) #选择第0和1列
      [[1 2]
       [4 5]]
      
      print(bArray[1,[0,1]])  #选择第1行 第0和1列
      [4 5]
      
      for row in bArray:
          print(row)
          
      [1 2 3]
      [4 5 6]
      
      print(bArray.reshape(3,2))  #原多维数组不改变
      [[1 2]
       [3 4]
       [5 6]]
      
      bArray.resize(3,2)   #改变多维数组本身
      
      bArray
      Out[27]: 
      array([[1, 2],
             [3, 4],
             [5, 6]])
      
      bArray=np.array([1,2,3])
      
      cArray=np.array([4,5,6])
      
      np.vstack((bArray,cArray))   #在垂直方向拼接
      Out[30]: 
      array([[1, 2, 3],
             [4, 5, 6]])
      
      np.hstack((bArray,cArray))         #在水平方向拼接
      Out[31]: array([1, 2, 3, 4, 5, 6])
      
    • ndarray的运算

      aArray=np.array([(5,5,5),(2,2,2)])
      
      bArray=np.array([(5,5,5),(1,2,3)])
      
      cArray=aArray*bArray
      cArray
      Out[36]: 
      array([[25, 25, 25],
             [ 2,  4,  6]])
      
      aArray+=bArray
      
      aArray
      Out[38]: 
      array([[10, 10, 10],
             [ 3,  4,  5]])
      a=np.array([1,2,3])
      
      b=np.array([[1,2,3],[4,5,6]])
      
      a+b  #广播
      Out[42]: 
      array([[2, 4, 6],
             [5, 7, 9]])
      
      b.sum()
      Out[45]: 21
      
      b.sum(axis=0)
      Out[46]: array([5, 7, 9])
      
      b.sum(axis=1)
      Out[47]: array([ 6, 15])
      
      b.mean() #平均值
      Out[48]: 3.5
      
      b.var() #方差
      Out[49]: 2.9166666666666665
      
      b.std()  #标准差
      Out[50]: 1.707825127659933
      
    • naarray的专门应用 - 线性代数

      • dot矩阵内积 linalg.det行列式 linalg.inv逆矩阵 linalg.solve多元一次方程求根 linalg.eig求特征值和特征向量

        import numpy as np
        x=np.array([[1,2],[3,4]])
        
        r1=np.linalg.det(x)
        
        r1
        Out[53]: -2.0000000000000004
        
        r2=np.linalg.inv(x)
        
        r2
        Out[55]: 
        array([[-2. ,  1. ],
               [ 1.5, -0.5]])
        
        r3=np.dot(x,x)
        
        r3
        Out[57]: 
        array([[ 7, 10],
               [15, 22]])
        
    • ndarrayufunc函数

      • 一种可以对数组的每个元素进行操作的函数 很多是基于C语言级别实现 计算速度很快

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值