Numpy介绍

编辑

一个用python实现的科学计算,包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便。
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。

数据类型ndarray

编辑

NumPy provides an N-dimensional array type, the ndarray, which describes a collection of “items” of the same type.
NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。
ndarray到底跟原生python列表的区别:

从图中我们可以看出ndarray在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快。
这是因为ndarray中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,所以ndarray在存储元素时内存可以连续,而python原生list就只能通过寻址方式找到下一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list,但在科学计算中,Numpy的ndarray就可以省掉很多循环语句,代码使用方面比Python原生list简单的多。
numpy内置了并行运算功能,当系统有多个核心时,做某种计算时,numpy会自动做并行计算
Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码。
ndarray的属性
  

生成数组的方法:

empty(shape[, dtype, order])
empty_like(a[, dtype, order, subok])
eye(N[, M, k, dtype, order])
identity(n[, dtype])
ones(shape[, dtype, order])
ones_like(a[, dtype, order, subok])
zeros(shape[, dtype, order])
zeros_like(a[, dtype, order, subok])
full(shape, fill_value[, dtype, order])
full_like(a, fill_value[, dtype, order, subok])

Matplotlib

编辑 讨论

Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
 
中文名
绘图库
外文名
Matplotlib
所属领域
计算机
作    用
绘图
元    素
x轴和y轴
Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 [1]  。
通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
Matplotlib基础知识
1.Matplotlib中的基本图表包括的元素
x轴和y轴
水平和垂直的轴线
x轴和y轴刻度
刻度标示坐标轴的分隔,包括最小刻度和最大刻度
x轴和y轴刻度标签
表示特定坐标轴的值
绘图区域
实际绘图的区域
2.hold属性
hold属性默认为True,允许在一幅图中绘制多个曲线;将hold属性修改为False,每一个plot都会覆盖前面的plot。
但是目前不推荐去动hold这个属性,这种做法(会有警告)。因此使用默认设置即可。
3.网格线
grid方法
使用grid方法为图添加网格线
设置grid参数(参数与plot函数相同)
.lw代表linewidth,线的粗细
.alpha表示线的明暗程度
4.axis方法
如果axis方法没有任何参数,则返回当前坐标轴的上下限
5.xlim方法和ylim方法
除了plt.axis方法,还可以通过xlim,ylim方法设置坐标轴范围
6.legend方法
两种传参方法:
【推荐使用】在plot函数中增加label参数
在legend方法中传入字符串列表
配置matplotlib参数
永久配置
matplotlib配置信息是从配置文件读取的。在配置文件中可以为matplotlib的几乎所有属性指定永久有效的默认值
安装级配置文件(Per installation configuration file)
Python的site-packages目录下(site-packages/matplotlib/mpl-data/matplotlibrc)
系统级配置,每次重新安装matplotlib后,配置文件会被覆盖
如果希望保持持久有效的配置,最好选择在用户级配置文件中进行设置
对本配置文件的最佳应用方式,是将其作为默认配置模板
用户级.matplotlib/matplotlibrc文件(Per user .matplotlib/matplotlibrc)
用户的Documents and Settings目录
可以用matplotlib.get_configdir()命令来找到当前用户的配置文件目录
当前工作目录
代码运行的目录
在当前目录下,可以为目录所包含的当前项目代码定制matplotlib配置项。配置文件的文件名是matplotlibrc
在Windows系统中,没有全局配置文件,用户配置文件的位置在C:\Documents and Settings\yourname\.matplotlib。
在Linux系统中,全局配置文件的位置在/etc/matplotlibrc,用户配置文件的位置在$HOME/.matplotlib/matplotlibrc。
动态配置
程序中配置代码
To finetune settings only for that execution; this overwrites every configuration file.
配置方法的优先级为:
Matplotlib functions in Python code
matplotlibrc file in the current directory
User matplotlibrc file
Global matplotlibrc file
rcParams方法
通过rcParams字典访问并修改所有已经加载的配置项
简单运用
 
 
 
科学坐标绘制
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif']=['SimHei']
def Draw(pcolor,nt_point,nt_text,nt_size):
plt.plot(x,y,'k',label="$exp_decay$",color=pcolor,\
linewidth=3,linestyle="-")
plt.plot(x,z,"b--",label="$cos(x^2)$",linewidth=1)
plt.xlabel('时间(s)')
plt.ylabel('幅度(mV)')
plt.title("阻尼衰减曲线绘制")
plt.annotate('$cos(2\pi t)\exp(-t)$',xy=nt_point,\
xytext=nt_text,fontsize=nt_size,arrowprops=\
dict(arrowstyle='->',connectionstyle="arc3,rad=.1"))
def Shadow(a, b):
ix=(x>a)&(x<b)
plt.fill_between(x,y,0,where=ix,facecolor='grey',alpha=0.25)
plt.text(0.5*(a+b),0.2,r"$\int_a^b f(x)\mathrm{d}x$",\
horizontalalignment='center')
def XY_Axis(x_start,x_end,y_start,y_end):
plt.xlim(x_start,x_end)
plt.ylim(y_start,y_end)
plt.xticks([np.pi/3,2*np.pi/3,1*np.pi,4*np.pi/3,\
5*np.pi/3],['$\pi/3$','$2\pi/3$','$\pi$','$4\pi/3$','$5\pi/3$'])
x=np.linspace(0.0,6.0,100)
y=np.cos(2*np.pi*x)*np.exp(-x)+0.8
z=0.5*np.cos(x**2)+0.8
note_point,note_text,note_size=(1,np.cos(2*np.pi)*\
np.exp(-1)+0.8),(1,1.4),14
fig=plt.figure(figsize=(8,6),facecolor='white')
plt.subplot(111)
Draw("red",note_point,note_text,note_size)
XY_Axis(0,5,0,1.8)
Shadow(0.8, 3)
plt.legend()
plt.savefig('sample.jpg')
plt.show()

效果图

手绘风格

from PIL import Image
import numpy as np
im0=np.array(Image.open('D:\\故宫.jpg').convert("L"))
im1=255-im0
im2=(100/255)*im0+150
im3=255*(im1/255)**2
pil_im=Image.fromarray(np.uint(im1))
pil_im.save('gugonggai.jpg')
pil_im.show()

将im3改为:im3=255-255*(im1/255)**0.5+150

 

from PIL import Image
import numpy as np
vec_el=np.pi/2.2
vec_az=np.pi/4.
depth=7. #颜色的深浅,建议不要写太大的值,因为会变得很丑
im=np.array(Image.open('D:\\故宫.jpg').convert("L"))
a=np.asany array(im).astype('float')
grad=np.gradient(a)
grad_x,grad_y=grad
grad_x=grad_x*depth/100.
grad_y=grad_y*depth/100.
dx=np.cos(vec_el)*np.cos(vec_az)
dy=np.cos(vec_el)*np.cos(vec_az)
dz=np.sin(vec_el)
A=np.sqrt(grad_x**2+grad_y**2+1.)
uni_x=grad_x/A
uni_y=grad_y/A
uni_z=1./A
a2=255*(dx*uni_x+dy*uni_y+dz*uni_z)
a2=a2.clip(0,255)
im2=Image.fromarray(a2.astype('uint8'))
im2.save('gugong3.jpg')

Numpy and Matplotlib的更多相关文章

  1. win7系统下python安装numpy,matplotlib,scipy和scikit-learn

    1.安装numpy,matplotlib,scipy和scikit-learn win7系统下直接采用pip或者下载源文件进行安装numpy,matplotlib,scipy时会遇到各种问题,这是因为 ...

  2. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

  3. 在Ubuntu 14.04 64bit上安装numpy和matplotlib库

    原文:http://blog.csdn.net/tao_627/article/details/44004541 按照这个成功安装! 机器学习是数据挖掘的一种实现形式,在学习<机器学习实战> ...

  4. 安装Numpy和matplotlib

    (1)测试程序     这是我从网上(http://www.open-open.com/lib/view/open1393488232380.html)找到的一个使用Numpy和matplotlib的 ...

  5. Linux入门(10)——Ubuntu16.04使用pip3和pip安装numpy,scipy,matplotlib等第三方库

    安装Python3第三方库numpy,scipy,matplotlib: sudo apt install python3-pip pip3 install numpy pip3 install sc ...

  6. 教你如何绘制数学函数图像——numpy和matplotlib的简单应用

    numpy和matplotlib的简单应用 一.numpy库 1.什么是numpy NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表 ...

  7. python 数据分析工具之 numpy pandas matplotlib

    作为一个网络技术人员,机器学习是一种很有必要学习的技术,在这个数据爆炸的时代更是如此. python做数据分析,最常用以下几个库 numpy pandas matplotlib 一.Numpy库 为了 ...

  8. 使用numpy与matplotlib.pyplot画图

    使用numpy与matplotlib.pyplot画图 1. 折线图 1 # -*- enccoding:utf-8 -*- 2 import numpy as np 3 import matplot ...

  9. numpy 与 matplotlib 的应用

    numpy 与 matplotlib 的应用 一.库函数介绍 1. numpy库 NumPy(Numeric Python)提供了一个N维的数组类型ndarray,Numpy底层使用C语言编写,内部解 ...

  10. ubuntu18.04下安装Anaconda及numpy、matplotlib

    为了学习深度学习,我需要首先掌握利用python进行科学计算的知识,顺便复习一下线性代数.微积分.概率论.当然,现在我要做的是安装Anaconda. 1.官网下载,linux版本:https://ww ...

随机推荐

  1. Linux命令、脚本

    1.传文件 FTP/SFTP:ftp 用户名@远程ip SCP:注意ip后有个   : 本地文件发到远程 scp 本地文件 用户名@远程ip:远程路径   远程文件发到本地 scp 用户名@远程ip: ...

  2. Webpack 使用url-loader和file-loader打包资源文件

    在js中不仅可以通过import引入js文件,还可以引入图片.视频等资源文件,这样webpack打包时就会把所引入的资源文件也一起打包进来 打包进来的文件会返回一个字符串:即文件的路径 要做到这一点, ...

  3. MM-物料分类帐差异分摊

    物料分类帐差异分摊-MR21-MR22: https://wenku.baidu.com/view/6599e8f326fff705cc170ad8.html

  4. Delphi 10.3中使用JSON

    有一个对JSON处理的单元,在你需要使用JSON的单元里面引入"System.json",随后你就可以用Delphi自己的json处理类了. 注意:   1,JSON类创建后,里面 ...

  5. Sql Server数据库之多表查询

    一.连接查询 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据 目的:实现多表查询操作 语法:From join_table join_type join_table[ON(join_con ...

  6. js生成带有logo的二维码并保存成图片下载

    生成二维码,需要依赖jquery,先引入一个jquery,然后需要一个插件改变过了jquery-qrcode.js 插件代码(需要的自己打开看): /*! jquery-qrcode v0.14.0 ...

  7. Install Oracle Database client in silent mode

    下面通过在工作中的使用,总结出不同版本Oracle client的静默(silent)安装方法. Oracle Database client 12.2.0.1 1. reponse file con ...

  8. 基于IAR平台FreeRTOS移植

     开始这篇文章之前先简单说明一下,我使用的MCU是我们公司自主研发的ACH1180芯片,和STM32差不多,都是Cortex-M4的核,所以移植的过程参考了STM32移植的步骤. 1.解压FreeRT ...

  9. python入门(十五):装饰器

    1.装饰器(decorator):设计模式 作用:给不同的函数和方法,增加不同的公用的功能. @classmethod,@staticmethod等均是装饰器 定义一个装饰函数,函数必须返回一个闭包函 ...

  10. Unity中建立文本保存数据

    public void CreateYunYD() { GameToolsManager.Instance.effectType = EFFECTTYPE.YunYD; CreateYunOrWu(& ...