Numpy向量化运算

  • 安装方法 pip install numpy

  • Numpy是python的开源数值计算库

    1. 数值计算:计算机求数学问题近似解
    2. 科学计算:
      • 符号计算:pi = C/d = 周长/直径
      • 数值计算:pi = 3.1415926
  • Numpy:

    1. Matplotlib/Scipy/Pandas/scikit-learn/Tensorflow等
    2. 可视化、科学计算、数据分析、机器学习、深度学习库的基础库,
    3. 也是Python数据科学的基础

案例,求解下面的y值

  • x1 = [1,2,3,4,5]
  • x2 = [3,5,2,9,10]
  • y = x12+x23{x1}^2+{x2}^3x12+x23
  1. python计算方式

    x1 = [1,2,3,4,5]
    x2 = [3,5,2,9,10]
    y = []
    for xx,yy in zip(x1,x2):y.append(xx**2 + yy**3)
    print(y)
    

  2. 使用Numpy的向量化运行

    import numpyx1 = numpy.array([1,2,3,4,5])
    x2 = numpy.array([3,5,2,9,10])
    y = x1**2 + x2**3
    print(y)
    

  • 上面计算中,无法直接看出两者的差距,可以看下面代码:

    import numpy
    import datetimek = 2222222
    m = 3333333x1 = [1,2,3,4,5]
    x2 = [3,5,2,9,10]
    y3 = []
    dt1 = datetime.datetime.now()
    for xx,yy in zip(x1,x2):y3.append(xx**k+yy**m)
    dat2 = (datetime.datetime.now() -dt1).total_seconds()
    print("普通计算时间:",dat2)print("- "* 30)
    x1 = numpy.array([1,2,3,4,5])
    x2 = numpy.array([3,5,2,9,10])dat3 = datetime.datetime.now()
    y = x1**k + x2**m
    print(y)
    dat4 = (datetime.datetime.now() - dat3).total_seconds()
    print("numpy计算时间:",dat4)
    

  • 矢量化运算(向量化运算)

  • 矢量化运算时一种特殊的并行计算方式

    1. 标量计算 --> 串行编程 = 同时只能做一件事,一件接一件
    2. 矢量运算 --> 并行编程 = 同时做所有事
  • 标量运算:省空间,费时间

  • 矢量运算:费空间,省时间

案例:数值模拟-随机漫步

  • 数值模拟

    1. 用计算机模拟自然现象,达到研究现实问题的目的
  • 随机漫步(随机游走,Random Walk):
    1. 布朗运动的数学表达

      • 广泛用于数学/物理/互联网/金融等行业扩散现象的数值模拟
      • 一滴水掉进水里,花粉的布朗运动/金融的价格走势/搜索引擎算法
  • 描述
    1. 从起点开始,随机移动一步
    2. 以移动后的点做起点,重复以上过程

使用随机漫步模拟股票历史价格走势

  • 安装matplotlib插件 pip install matplotlib
  1. 一维的随机漫步,类似股票走势

    import numpy
    from matplotlib import pyplot
    # 随机生成0和1的数字,生成100000个
    stock = numpy.random.randint(0,2,100000)
    # 替換stock中的數字如果出现0就替换成-1,否则替换成1
    stock2 = numpy.where(stock==0,-1,1)
    # 累加,计算,本次移动的起点是上次移动的终点
    stock_sum = stock2.cumsum()
    print(stock[0:100])
    print(stock_sum[0:100])pyplot.figure(figsize = (18,12)) #设置图片大小
    pyplot.plot(stock_sum) # 绘图
    

  2. 二维的随机漫步

    import numpy
    from matplotlib import pyplot
    # 随机生成0和1的数字,生成100000个
    max = 100000
    x = numpy.random.randint(0,2,max)
    y = numpy.random.randint(0,2,max)
    # 修改步长,0转为-1。替換stock中的數字如果出现0就替换成-1,否则替换成1
    xx = numpy.where(x==0,-1,1)
    yy = numpy.where(y==0,-1,1)# 累加,计算,本次移动的起点是上次移动的终点
    xsum = xx.cumsum()
    ysum = yy.cumsum()pyplot.figure(figsize = (18,15),dpi=300) #设置图片大小
    pyplot.plot(xsum,ysum) # 绘图
    

  3. 动画展示二维随机漫步

    import numpy
    from matplotlib import pyplot
    from matplotlib.animation import FuncAnimation #载入动画子库
    # 随机生成0和1的数字,生成100000个
    max = 100000
    x = numpy.random.randint(0,2,max)
    y = numpy.random.randint(0,2,max)
    # 修改步长,0转为-1。替換stock中的數字如果出现0就替换成-1,否则替换成1
    xx = numpy.where(x==0,-1,1)
    yy = numpy.where(y==0,-1,1)# 累加,计算,本次移动的起点是上次移动的终点
    xsum = xx.cumsum()
    ysum = yy.cumsum()# pyplot.figure(figsize = (18,15),dpi=300) #设置图片大小
    # pyplot.plot(xsum,ysum) # 绘图# 动画画图
    %matplotlib notebook
    # 构建画板
    fig,ax = pyplot.subplots()#动画每帧要调用的函数
    def update(i):pyplot.title(i)pyplot.plot(xsum[i-2:i],ysum[i-2:i],alpha=0.5, #透明度)ani = FuncAnimation(fig, #动画应用的图像update,#动画每帧要调用的函数interval = 1, #动画帧间隔,毫秒frames = len(xsum), #动画帧数,对GIF有效,值调用函数内的i可以获取。可自定义值如range(50,100)
    )
    

  4. 三维随机漫步

    import numpy
    from matplotlib import pyplot
    from mpl_toolkits.mplot3d import Axes3D #載入三维字库%matplotlib notebookdef getPoint(n=100000):x = numpy.where(numpy.random.randint(0,2,n)==0,-1,1).cumsum()y = numpy.where(numpy.random.randint(0,2,n)==0,-1,1).cumsum()z = numpy.where(numpy.random.randint(0,2,n)==0,-1,1).cumsum()return x,y,zx,y,z = getPoint(600)#构建三维坐标系
    fig = pyplot.figure()
    ax = Axes3D(fig)#绘图
    ax.plot(x,y,z)
    #设置点的颜色
    ax.scatter(x,y,z,color='r',s=20,alpha=0.3)
    

扩展,随机数的散点图

import numpy
from matplotlib import pyplot
import randomcount = 80000
x = numpy.random.rand(count)
y = numpy.random.rand(count)
# x = numpy.array([random.random() for _ in range(count)])
# y = numpy.array([random.random() for _ in range(count)])pyplot.figure(figsize=(18,8))
pyplot.scatter(x,y,s=0.5)

Numpy向量化运算相关推荐

  1. python笔记5:向量化运算

    # -*- coding: utf-8 -*- #定义:向量化计算是一种特殊的并行计算的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组/向量 ...

  2. Numpy学习(2)numpy向量化、numpy操作

    1.Numpy创建向量 Numpy创建的数组有时也称为向量,但要注意两者的区别,需要注意数组的秩. Numpy使用了优化的C api,运算速度快,在深度学习需要运用numpy向量化加快运算速度,Num ...

  3. Python机器学习:线型回归法04向量化运算

    核心两行代码, 向量化 比较两者运算速度 运行速度提升100倍 #性能测试 #性能测试 m = 10000000 big_x = np.random.random(size=m) print(big_ ...

  4. purrr | 使用map族函数进行向量化运算

    前面介绍的进行向量化运算的apply族函数来自基础包base,而本文介绍的map族函数则来自purrr包,是tidyverse家族的一员.与apply相比,map函数在逻辑上更易于理解,并且支持匿名函 ...

  5. base | 使用apply族函数进行向量化运算

    R基础包base的apply族函数采用向量化运算实现批量计算,相较于for循环语句其代码更加简洁.运行速度也更快,恰当地运用这些函数能够极大提高代码质量.本篇主要介绍apply族函数的apply(), ...

  6. 马恩驰:R向量化运算

    转载自:http://blog.csdn.net/littleyearyear/article/details/39940533 一.背景 当今社会,数据量剧增让我们越来越关注计算或算法的效率.&qu ...

  7. matlab矩阵向量化,矩阵向量化运算

    定理 6 设 AXB可乘,则有 AXB 0, X A 0或B 0 定理 7 设 x' Ay 0,x,y A 0 定理 6 和定理 7 的证明可按矩阵向量化运算进行(Kronecker 积). .. . ...

  8. 机器学习入门(04)— 神经网络多维数组 NumPy 相乘运算

    1. 多维数组 用 NumPy 构建多维数组代码示例如下: In [1]: import numpy as npIn [2]: A = np.array([1,2,3,4])In [3]: A Out ...

  9. numpy 矩阵与向量相乘_高能!8段代码演示Numpy数据运算的神操作

    作者|王天庆 来源|大数据(ID:hzdashuju) 导读:本文介绍一下在Python科学计算中非常重要的一个库--Numpy. Numpy是Numerical Python extensions ...

  10. 高能!8段代码演示Numpy数据运算的神操作

    导读:本文介绍一下在Python科学计算中非常重要的一个库--Numpy. 作者:王天庆 如需转载请联系大数据(ID:hzdashuju) Numpy是Numerical Python extensi ...

最新文章

  1. logging.Formatter 日期格式
  2. 区块链系统之《基于区块链的PKI数字证书系统》
  3. 气温常年在25度的地方_最低调的海滨城市,物价便宜,常年25度,沙滩细白,不输三亚!...
  4. UITableView-FDTemplateLayoutCell自动计算UITableView高度的使用
  5. 平衡二叉树(AVL树)-详解平衡调整
  6. char *c = abc和char c[]=abc
  7. Linux安装mongodb数据库最新版(全网最细)
  8. android防止内存溢出浅析
  9. 第一个python小工具
  10. Qt + GDAL 写入矢量图层 shp
  11. java jsp 乱码_JSP中文乱码问题
  12. CAD2020软件安装教程【搬运】
  13. ORA-39194: Table mode jobs require the tables to be comma separated.
  14. 宾州州立大学帕克分校计算机科学,宾夕法尼亚州立大学帕克分校计算机专业好吗?...
  15. 随心所欲的“四舍五入” 之 ROUNDUP函数如何使用?
  16. Irvue for Mac(苹果壁纸软件)
  17. Android开发英语单词积累
  18. FastQC软件下载
  19. 使用函数统计指定数字的个数 (15 分)
  20. eclipse导入已存在工程报 Faceted Project Problem 错误

热门文章

  1. 总结 | C#实现Excel导出功能
  2. 深入理解FIFO(包含有FIFO深度的解释)
  3. Python-torch.optim优化算法理解之optim.Adam()
  4. wps压缩word文档方法
  5. 按需使用vue-cli-plugin-element插件
  6. Laravel文档梳理9、Blade模板
  7. 关闭appleid双重认证_iPhone 丢失怎么办?开启双重认证就能解决!
  8. python 相关系数矩阵_用numpy计算Pearson相关系数
  9. 关于wkhtmltopdf生成pdf空白
  10. 如何用数据进行产品运营