当前位置: 首页 > 编程日记 > 正文

Numpy and Matplotlib

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')

转载于:https://www.cnblogs.com/gyy-15768200938/p/10766009.html

相关文章:

梯度下降法简介

条件数表征函数相对于输入的微小变化而变化的快慢程度。输入被轻微扰动而迅速改变的函数对于科学计算来说可能是有问题的&#xff0c;因为输入中的舍入误差可能导致输出的巨大变化。大多数深度学习算法都涉及某种形式的优化。优化指的是改变x以最小化或最大化某个函数f(x)的任务…

微软亚研院CV大佬代季峰跳槽商汤为哪般?

整理 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;近日&#xff0c;知乎上一篇离开关于MSRA&#xff08;微软亚洲研究院&#xff09;和MSRA CV未来发展的帖子讨论热度颇高&#xff0c;这个帖子以MSRA CV执行研究主任代季峰离职加入商汤为引子&#xff0c;引…

iOS Block实现探究

2019独角兽企业重金招聘Python工程师标准>>> 使用clang的rewrite-objc filename 可以将有block的c代码转换成cpp代码。从中可以看到block的实现。 #include <stdio.h> int main() {void (^blk)(void) ^{printf("Block\n");};blk();return 0; } 使…

CUDA Samples: Long Vector Add

以下CUDA sample是分别用C和CUDA实现的两个非常大的向量相加操作&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;各个文件内容如下&#xff1a;common.hpp:#ifndef FBC_CUDA_TEST_COMMON_HPP_ #define FBC_CUDA_TEST_COMMON_HPP_#include<random>template&l…

TensorFlow2.0正式版发布,极简安装TF2.0(CPUGPU)教程

作者 | 小宋是呢转载自CSDN博客【导读】TensorFlow 2.0&#xff0c;昨天凌晨&#xff0c;正式放出了2.0版本。不少网友表示&#xff0c;TensorFlow 2.0比PyTorch更好用&#xff0c;已经准备全面转向这个新升级的深度学习框架了。本篇文章就带领大家用最简单地方式安装TF2.0正式…

javascript全栈开发实践-准备

目标&#xff1a; 我们将会通过一些列教程&#xff0c;在只使用JavaScript开发的情况下&#xff0c;实现一个手写笔记应用。该应用具有以下特点&#xff1a; 全平台&#xff0c;有手机客户端&#xff08;Android/iOS&#xff09;&#xff0c;Windows&#xff0c;macOS&#xff…

POJ 1017 Packets 贪心 模拟

一步一步模拟&#xff0c;做这种题好累 先放大的的&#xff0c;然后记录剩下的空位有多少&#xff0c;塞1*1和2*2的进去 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cstdlib> #incl…

NLP被英语统治?打破成见,英语不应是「自然语言」同义词

&#xff08;图片付费下载自视觉中国&#xff09;作者 | Emily M. Bender译者 | 陆离责编 | 夕颜出品 | AI科技大本营&#xff08;ID: rgznai100&#xff09; 【导读】在NLP领域&#xff0c;多资源语言以英语、汉语&#xff08;普通话&#xff09;、阿拉伯语和法语为代表&#…

CUDA Samples: Dot Product

以下CUDA sample是分别用C和CUDA实现的两个非常大的向量实现点积操作&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;各个文件内容如下&#xff1a;common.hpp:#ifndef FBC_CUDA_TEST_COMMON_HPP_ #define FBC_CUDA_TEST_COMMON_HPP_#include<random>templa…

element ui只输入数字校验

注意&#xff1a;圈起来的两个地方&#xff0c;刚开始忘记写typenumber了&#xff0c;导致可以输入‘123abc’这样的&#xff0c;之后加上了就OK了 转载于:https://www.cnblogs.com/samsara-yx/p/10774270.html

对DeDecms之index.php页面的补充

2019独角兽企业重金招聘Python工程师标准>>> 1、301是什么&#xff1f; 其实就是HTTP状态表。就是当用户输入url请求时&#xff0c;服务器的一个反馈状态。 详细链接http://www.cnblogs.com/kunhony/archive/2006/06/16/427305.html 2、common.inc.php和arc.partvi…

OpenCV-Python:K值聚类

关于K聚类&#xff0c;我曾经在一篇博客中提到过&#xff0c;这里简单的做个回顾。 KMeans的步骤以及其他的聚类算法 K-均值是因为它可以发现k个不同的簇&#xff0c;且每个簇的中心采用簇中所含值的均值计算 其他聚类算法&#xff1a;二分K-均值 讲解一下步骤&#xff0c;其实…

CUDA Samples: Julia

以下CUDA sample是分别用C和CUDA实现的绘制Julia集曲线&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;code参考了《GPU高性能编程CUDA实战》一书的第四章&#xff0c;各个文件内容如下&#xff1a;funset.cpp:#include "funset.hpp" #include <rand…

给初学者的深度学习入门指南

从无人驾驶汽车到AlphaGo战胜人类&#xff0c;机器学习成为了当下最热门的技术。而机器学习中一种重要的方法就是深度学习。作为一个有理想的程序员&#xff0c;若是不懂人工智能&#xff08;AI&#xff09;领域中深度学习&#xff08;DL&#xff09;这个超热的技术&#xff0c…

epoll/select

为什么80%的码农都做不了架构师&#xff1f;>>> epoll相对select优点主要有三&#xff1a; 1. select的句柄数目受限&#xff0c;在linux/posix_types.h头文件有这样的声明&#xff1a;#define __FD_SETSIZE 1024 表示select最多同时监听1024个fd。而epoll没…

CUDA Samples: ripple

以下CUDA sample是分别用C和CUDA实现的生成的波纹图像&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;code参考了《GPU高性能编程CUDA实战》一书的第五章&#xff0c;各个文件内容如下&#xff1a;funset.cpp&#xff1a;#include "funset.hpp" #includ…

Python告诉你这些旅游景点好玩、便宜、人又少!

&#xff08;图片由CSDN付费下载自东方IC&#xff09;作者 | 猪哥来源 | 裸睡的猪&#xff08;ID&#xff1a;IT--Pig&#xff09; 2019年国庆马上就要到来&#xff0c;今年来点新花样吧&#xff0c;玩肯定是要去玩的&#xff0c;不然怎么给祖国庆生&#xff1f;那去哪里玩&…

手机APP自动化之uiautomator2 +python3 UI自动化

题记&#xff1a; 之前一直用APPium直到用安卓9.0 发现uiautomatorviewer不支持安卓 9.0&#xff0c;点击截屏按钮 一直报错&#xff0c;百度很久解决方法都不可以&#xff0c;偶然间看见有人推荐&#xff1a;uiautomator2 就尝试使用 发现比appium要简单一些&#xff1b; 下面…

爱上MVC3系列~开发一个站点地图(俗称面包屑)

回到目录 原来早在webform控件时代就有了SiteMap这个东西,而进行MVC时代后,我们也希望有这样一个东西,它为我们提供了不少方便,如很方便的实现页面导航的内容修改,页面导航的样式换肤等. 我的MvcSiteMap主要由实体文件,XML配置文件,C#调用文件组成,当然为了前台使用方便,可以为…

Django web框架-----Django连接现有mysql数据库

第一步&#xff1a;win10下载mysql5.7压缩包配置安装mysql&#xff0c;创建数据库或导入数据库 第二步&#xff1a;win10搭建django2.1.7开发环境&#xff0c;创建项目为mytestsite&#xff0c;创建应用app为quicktool 第三步&#xff1a;编辑与项目同名的文件夹的配置文件&…

CUDA Samples: green ball

以下CUDA sample是分别用C和CUDA实现的生成的绿色的球图像&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;code参考了《GPU高性能编程CUDA实战》一书的第五章&#xff0c;各个文件内容如下&#xff1a;funset.cpp:#include "funset.hpp" #include <r…

ICLR 2020论文投稿2600篇,GNN、BERT、Transformer领跑热门研究方向

&#xff08;图片由AI科技大本营付费下载自视觉中国&#xff09;出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;2019 年 4&#xff0c;ICLR 2020 论文征集活动开始&#xff0c;截止 9 月 25 日&#xff0c;大会共收到近 2600 篇投稿&#xff0c;相比 ICL…

android环境安装之android4.2安装(转)

准备学习android&#xff0c;着手安装android时听说很麻烦&#xff0c;在网上看了很多android安装说明&#xff0c;都是android比较早的版本&#xff0c;我这里安装了android4.2&#xff0c;简单记录一下。 安装分为几步&#xff0c;首先申明&#xff0c;安装时最好保持网络畅通…

如何创建一个百分百懂你的产品推荐系统 | 深度教程(附代码详解)

&#xff08;图片由AI科技大本营付费下载自视觉中国&#xff09;来源 | 读芯术&#xff08;ID&#xff1a;AI_Discovery&#xff09;你也许每天都会逛一逛电子商务网站&#xff0c;或者从博客、新闻和媒体出版物上阅读大量文章。浏览这些东西的时候&#xff0c;最令读者或者用户…

CUDA Samples: Ray Tracking

以下CUDA sample是分别用C和CUDA实现的生成光线跟踪图像&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;code参考了《GPU高性能编程CUDA实战》一书的第六章&#xff0c;CUDA各实现包括了使用常量内存和不使用常量内存两种方法&#xff0c;各个文件内容如下&#x…

从产品的适用性以及费用方面考虑

物联宇手持终端在对比性价比高低应该从产品的适用性以及费用方面考虑。不过在选择时不一定要整机&#xff0c;可以按实际需求让厂商定做和行业需要功能的手持机&#xff0c;这样有针对性的定制更能体现整体的性价效率。转载于:https://blog.51cto.com/14222294/2386642

杨学海:跨境电商新通道-进口保税直邮模式解析

为什么80%的码农都做不了架构师&#xff1f;>>> 杨学海&#xff1a;跨境电商新通道-进口保税直邮模式解析 广州威云供应链管理公司总经理杨学海在第九届中国中小企业电子商务大会上表示&#xff0c;其品牌海外通要为跨境电子商务提供一个更加快速、便捷、低成本&am…

CUDA Samples: heat conduction(模拟热传导)

以下CUDA sample是分别用C和CUDA实现的模拟热传导生成的图像&#xff0c;并对其中使用到的CUDA函数进行了解说&#xff0c;code参考了《GPU高性能编程CUDA实战》一书的第七章&#xff0c;各个文件内容如下&#xff1a;funset.cpp:#include "funset.hpp" #include <…

2020应届生:今年秋招也太太太太太难了吧!

讲个简短的鬼故事&#xff1a;2020秋招已经过去一大半了&#xff01;回顾9月&#xff0c;你可能以为秋招还有很多机会&#xff0c;还有大把时间准备。然而各大名企的实际进度却不等人。阿里巴巴9月12日网申截止&#xff1b;腾讯9月15日网申截止&#xff1b;宝洁9月20日关闭网申…

PDF文字怎么编辑,PDF文档编辑方法

有时候遇到PDF文件不是自己制作的或者是制作的有点匆忙&#xff0c;会有文字遗漏或者打错的时候&#xff0c;我们使用就会有点麻烦就需要把文件中的文字进行编辑修改&#xff0c;那么具体怎么做呢&#xff1f;小伙伴们都挺好奇吧&#xff0c;今天就来跟大家分享一下。操作软件&…