Python 绘图笔记——4.其他
补充几个不常用的图像绘制的示例代码。 直方图 函数原型为 12def ax.hist(x, bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, *, data=None, **kwargs): ... 其中的主要选项包括: x,要统计的数据,array or sequence of arrays bins,决定数据 x 如何被分割 如果 bins 是整数 n,则数据 x 分割为 n 个等宽部分 如果 bins 是一个序列,则定义 bin 的边缘,包括第一个 bin 的左边缘和最后一个 bin 的右边缘,这样 bin 可能不等距 如果 bins...
Python 绘图笔记——3.动画
这里记录一下 Python 的 matplotlib 的动画效果,注意我们需要分别考虑如下三种运行环境,它们对于动画的支持是不一样的: 浏览器启动 Jupyter Notebook 或 Jupyter Lab 直接运行 Python 脚本 VSCode 启动 Jupyter(目前仍然不支持动画) 例如浏览器启动 Jupyter 可能需要相关的插件(例如 ipympl 插件),并且需要魔法命令 1%matplotlib notebook 在启动内核后,至少需要执行这个魔法命令一次,否则无法播放动画,两个同时播放的动画甚至还会相互影响。 在直接运行 Python 脚本时,Jupyter 的魔法指令是语法错误,对于动画而言,直接运行 Python 脚本反而比 Jupyter 更方便。 matplotlib 绘制动画主要包括两种方法:FuncAnimation 和 ArtistAnimation,下面的代码都需要导入如下的库 123import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation...
Python 绘图笔记——2.曲线图
现在关注最常见的绘制曲线图需求。 绘制曲线 使用 Axes 的 plot 方法绘制曲线图,假设 x,y,x2,y2 都是一维的数组,那么可以使用下面几种方式绘制曲线 12345ax.plot(y) # 一条散点连成的曲线,横坐标取从0开始的整数,纵坐标取自yax.plot(x,y) # 一条散点连成的曲线,横坐标取自x,纵坐标取自yax.plot(x,y,x2,y2) # 两条曲线,第一条横坐标取自x,纵坐标取自y,第二条横坐标取自x2,纵坐标取自y2 还可以附加一些细节参数,例如颜色,曲线样式,图例等,下面依次介绍。 颜色 几个常用的颜色及其缩写如下: 蓝色 blue-b 绿色 green-g 红色 red-r 白色 white-w 黑色 black-k(因为b已经被blue占用) 金黄色 yellow-y 蓝绿色(青色)cyan-c 品红色 magenta-m 可以使用关键字参数设置固定的颜色 color='red' 或者使用十六进制的颜色编码如 color='#32CD32'。支持如下的简写: 将常用颜色使用简写,例如 color='r' 将关键字 color...
Python 绘图笔记——1.基础
matplotlib 介绍 matplotlib 大致是类似 matlab 风格的 2D 绘图库(3D 的功能比较弱,还是基于 2D 引擎勉强实现的),同时提供了两套 api: 一个是面向过程的,主要调用 matplotlib.pyplot 的函数; 一个是面向对象的,主要调用 matplotlib 的两个子类:matplotlib.figure.Figure 和 matplotlib.axes.Axes ,使用它们的方法进行细节操作。 面向过程的 api 适合简易使用的场景,但是不容易弄清原理;为了更复杂的绘图要求,这里主要采用面向对象的 api。关于绘图的呈现方式,在 Jupyter 中很可能会自动绘图而不需要 plt.show(),这与魔法指令 %matplotlib inline 有关。 在这一系列笔记中,需要使用如下模块: 123import numpy as npimport matplotlib as mplimport matplotlib.pyplot as plt 由于...
编码学习笔记
编码是最繁琐的问题之一了,尤其对于 C++ 这种 string 还只是char *简易封装的底层语言来说,对于非 ASCII 的字符串的处理需要考虑各个环节的编码,只要错了一项最终就是乱码。 对于一些更高级的语言比如 Python3,全部使用 utf8 就少了很多乱七八糟的乱码问题。 ASCII 码 首先从 ASCII 码开始,在早期的计算机中,使用一个字节(8 比特,实际上是 7 比特)来表示所有英文字母和常见的标点符号,以及回车,制表符等控制字符,如下表。 这里 4 比特用一个十六进制数来表示,实际上没有用完\(2^8=256\)个,只用了一半 128 个,具体而言就是只用了 7 比特,最高位始终为 0。 一些控制字符比如著名的换行符:CR/LF,制表符 HT(tab),剩下的 128 个字符,其实对于绝大多数欧美的拼音文字都是足够的,因此基于 ASCII 码也产生了很多表示西欧文字的编码方案。但是对于成千上万的汉字编码,一个字节显然是不可能完成的任务,典型的中日韩三国的编码问题,通常这被称为 CJK 编码,针对这些语言必须设计多字节编码方案。 多字节编码 仅仅使用...
Burgers 方程转换公式
作为典型的守恒律方程,Burgers 方程可以完成时间导和空间导的彻底转换,这里记录一下,后面肯定会用到。 \[ u_t + u u_x = 0 \] 一阶导信息 1u_t -> u_x 一阶导还是显然的: \[ u_x = -\frac{u_t}{u} \] 二阶导信息 1u_tt -> u_xt -> u_xx 做一下准备,对原始方程进行如下的求导 \[ \begin{aligned} u_t + u u_x &= 0\\ u_{tt} + u_t u_x + u u_{xt} &=0, (\partial_t)\\ u_{tx} + u_x u_x + u u_{xx} &=0, (\partial_x) \end{aligned} \] 得到 \[ u_{xt} = -\frac{1}{u}\left(u_{tt} + u_t u_x\right) \] 还有 \[ u_{xx} = -\frac{1}{u}\left(u_{tx} + u_x u_x\right) \] 三阶导信息 1u_ttt -> u_xtt...
文本文件的常见问题
关于文件的处理,在实际应用尤其是跨平台时会遇到各种各样的问题,主要包括如下几个问题: 非 ASCII 字符的编码问题:UTF-8?(这个问题太大了,因此放在另一篇专门的笔记中) 换行符的问题:LF or CRLF? 制表符问题:tab or space? 二进制数据的大小端问题 本文将主要对这些问题进行简要整理。 换行符问题 不同平台上文本文件的换行符是不一样的,具体来说: Windows:CRLF \r\n Linux:LF \n macOS:早期是 CR \r,现在已经改成 LF \n 现在只有 Windows 的 CRLF 是个异类了。其实严格来说\r的含义是回车,回到行首;\n的含义是换行,换到下一行。 换行符不一致会带来很多问题:例如 Linux 的文本文件在 Windows 上,可能出现无法换行,连续显示一大段的效果;例如 Windows 的文本在 Linux 上可能出现大量的^M,这就是\r并没有被理解为换行符的一部分。 原生的一些文本处理程序,可能无法兼容其它系统上的换行符,例如 Windows 自带的记事本只支持 CRLF,bash 脚本只支持...
Everything查询语法整理
学习整理一下 everything 的高级用法吧,感觉这对于提高 Windows 上的生产力很有帮助。(不砍柴,光想着磨刀 ing) everything 的基本工作流程: 输入一个指令或多个指令的组合 everything 对输入指令进行解析,获取具体要求(解析规则受到筛选器以及设置中的选项影响) everything 在数据库中进行检索,检索的项可能是:文件或文件夹的直接名称,或含有绝对路径的完整名称,这与具体情况和开启的选项有关。 检索是否与指令的具体要求相符,返回满足要求的所有项(不区分文件/文件夹) 注:Windows 在文件名和文件夹名称当中不能包含如下特殊字符,允许出现空格 1\ / : * ? " < > | 这些特殊字符可能在 everything 中有特殊的语法作用。 1....
Nginx基本使用与建站配置
记录一下 Nginx 的基本使用与建站配置,免得改的时候又忘记了。 (这里不涉及 hexo 博客还有 cloudreve 网盘的具体配置细节,这两个内容有专门的笔记) Nginx 基本使用 基本命令 常见操作要求在 root 用户下进行: 第一类操作 启动:systemctl nginx start 关闭:systemctl nginx stop 重启:systemctl nginx restart 第二类操作 测试:nginx -t,显示配置文件目录,检查 nginx.conf 是否有语法错误,并进行测试。 重新加载配置:nginx -s reload,reload 命令会重新加载配置文件,此时 nginx 服务不会中断,服务启动,文件即加载成功。 平稳地关闭:nginx -s quit,迅速地关闭:nginx -s stop。 配置逻辑 首先记录一下 Nginx 的配置逻辑:(root 用户直接apt-get安装,而非源码编译)nginx 配置文件全部位于/etc/nginx/目录,其中值得关注的包括: nginx.conf...
Visual Studio 简单使用记录
之前的 C++编程都是在 Linux 或者 VScode+MinGW 进行的,但有时难免需要使用宇宙第一 IDE,简单记录一些 VS 的基本使用吧,尤其了解一下分布在各个菜单栏各个按钮下的常用配置。(直接命令行参数多省事,省的到处找配置目录) 本文全部在 VS2019 完成,并且不考虑 MSVC 的纯命令行使用。 1. 解决方案与项目 项目是 VS 中的基本概念,例如某个库的开发就是一个项目,解决方案是项目的上层概念,一个解决方案可以包含多个项目。简单情况下一个项目会对应一个同名的解决方案。 解决方案在文件系统中直接对应一个xxx.sln解决方案文件,它记录了解决方案层面的配置信息。(可以直接点击.sln文件在 VS 中启动解决方案) 项目在文件系统中会对应.vcxproj以及.vcxproj.*文件,它们记录了项目层面的配置信息。如果点击.vcxproj文件,似乎还是启动对应的整个解决方案。例如.vcxproj.filters记录了一个虚拟的目录结构,.vcxproj.user记录了用户的 IDE 设置(包括...