Numpy向量化运算
Numpy向量化运算
安装方法
pip install numpy
Numpy是python的开源数值计算库
- 数值计算:计算机求数学问题近似解
- 科学计算:
- 符号计算:pi = C/d = 周长/直径
- 数值计算:pi = 3.1415926
Numpy:
- Matplotlib/Scipy/Pandas/scikit-learn/Tensorflow等
- 可视化、科学计算、数据分析、机器学习、深度学习库的基础库,
- 也是Python数据科学的基础
案例,求解下面的y值
- x1 = [1,2,3,4,5]
- x2 = [3,5,2,9,10]
- y = x12+x23{x1}^2+{x2}^3x12+x23
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)
使用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)
矢量化运算(向量化运算)
矢量化运算时一种特殊的并行计算方式
- 标量计算 --> 串行编程 = 同时只能做一件事,一件接一件
- 矢量运算 --> 并行编程 = 同时做所有事
标量运算:省空间,费时间
矢量运算:费空间,省时间
案例:数值模拟-随机漫步
- 数值模拟
- 用计算机模拟自然现象,达到研究现实问题的目的
- 随机漫步(随机游走,Random Walk):
- 布朗运动的数学表达
- 广泛用于数学/物理/互联网/金融等行业扩散现象的数值模拟
- 一滴水掉进水里,花粉的布朗运动/金融的价格走势/搜索引擎算法
- 布朗运动的数学表达
- 描述
- 从起点开始,随机移动一步
- 以移动后的点做起点,重复以上过程
使用随机漫步模拟股票历史价格走势
- 安装matplotlib插件
pip install matplotlib
一维的随机漫步,类似股票走势
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) # 绘图
二维的随机漫步
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) # 绘图
动画展示二维随机漫步
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) )
三维随机漫步
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向量化运算相关推荐
- python笔记5:向量化运算
# -*- coding: utf-8 -*- #定义:向量化计算是一种特殊的并行计算的方式,它可以在同一时间执行多次操作,通常是对不同的数据执行同样的一个或一批指令,或者说把指令应用于一个数组/向量 ...
- Numpy学习(2)numpy向量化、numpy操作
1.Numpy创建向量 Numpy创建的数组有时也称为向量,但要注意两者的区别,需要注意数组的秩. Numpy使用了优化的C api,运算速度快,在深度学习需要运用numpy向量化加快运算速度,Num ...
- Python机器学习:线型回归法04向量化运算
核心两行代码, 向量化 比较两者运算速度 运行速度提升100倍 #性能测试 #性能测试 m = 10000000 big_x = np.random.random(size=m) print(big_ ...
- purrr | 使用map族函数进行向量化运算
前面介绍的进行向量化运算的apply族函数来自基础包base,而本文介绍的map族函数则来自purrr包,是tidyverse家族的一员.与apply相比,map函数在逻辑上更易于理解,并且支持匿名函 ...
- base | 使用apply族函数进行向量化运算
R基础包base的apply族函数采用向量化运算实现批量计算,相较于for循环语句其代码更加简洁.运行速度也更快,恰当地运用这些函数能够极大提高代码质量.本篇主要介绍apply族函数的apply(), ...
- 马恩驰:R向量化运算
转载自:http://blog.csdn.net/littleyearyear/article/details/39940533 一.背景 当今社会,数据量剧增让我们越来越关注计算或算法的效率.&qu ...
- matlab矩阵向量化,矩阵向量化运算
定理 6 设 AXB可乘,则有 AXB 0, X A 0或B 0 定理 7 设 x' Ay 0,x,y A 0 定理 6 和定理 7 的证明可按矩阵向量化运算进行(Kronecker 积). .. . ...
- 机器学习入门(04)— 神经网络多维数组 NumPy 相乘运算
1. 多维数组 用 NumPy 构建多维数组代码示例如下: In [1]: import numpy as npIn [2]: A = np.array([1,2,3,4])In [3]: A Out ...
- numpy 矩阵与向量相乘_高能!8段代码演示Numpy数据运算的神操作
作者|王天庆 来源|大数据(ID:hzdashuju) 导读:本文介绍一下在Python科学计算中非常重要的一个库--Numpy. Numpy是Numerical Python extensions ...
- 高能!8段代码演示Numpy数据运算的神操作
导读:本文介绍一下在Python科学计算中非常重要的一个库--Numpy. 作者:王天庆 如需转载请联系大数据(ID:hzdashuju) Numpy是Numerical Python extensi ...
最新文章
- logging.Formatter 日期格式
- 区块链系统之《基于区块链的PKI数字证书系统》
- 气温常年在25度的地方_最低调的海滨城市,物价便宜,常年25度,沙滩细白,不输三亚!...
- UITableView-FDTemplateLayoutCell自动计算UITableView高度的使用
- 平衡二叉树(AVL树)-详解平衡调整
- char *c = abc和char c[]=abc
- Linux安装mongodb数据库最新版(全网最细)
- android防止内存溢出浅析
- 第一个python小工具
- Qt + GDAL 写入矢量图层 shp
- java jsp 乱码_JSP中文乱码问题
- CAD2020软件安装教程【搬运】
- ORA-39194: Table mode jobs require the tables to be comma separated.
- 宾州州立大学帕克分校计算机科学,宾夕法尼亚州立大学帕克分校计算机专业好吗?...
- 随心所欲的“四舍五入” 之 ROUNDUP函数如何使用?
- Irvue for Mac(苹果壁纸软件)
- Android开发英语单词积累
- FastQC软件下载
- 使用函数统计指定数字的个数 (15 分)
- eclipse导入已存在工程报 Faceted Project Problem 错误