炸鸡人博客 基本上无害

Python 系列:除法运算符

在 Python 3 中关于除法的运算符有三种:

  • /:表示精确的真除法。魔法方法为 __truediv__
  • //:表示地板除。魔法方法为 __floordiv__
  • %:表示求模。魔法方法为 __mod__

Vim 的语法

Vim 是一个拥有魔力的文本编辑器——这并不是比喻,而是说你在 Vim 中真的可以念咒语来操纵文本。看看我们的键盘,在 normal 模式下几乎每个键都有特定的功能,尤其是其中的数字和 26 个字母。如果把每个键都看作 Vim 这门语言中的单词,那么只要依据特定的语法,通过连续击键来遣词造句,就能施展操作文本的魔法。并且 Vim 语言的语法简单到用一句话就能描述:

verb + noun

下面就来简单讲讲魔法的基本法。

vim_keys

Numpy 系列:random 模块的变化

前言

这几天要用 NumPy 生成随机数,所以去查了一下 np.random 模块的官方文档,却惊讶地发现里面介绍的用法跟我的记忆有很大出入:例如以前用 np.random.rand 便能生成 [0, 1) 之间均匀分布的随机数,现在文档里记载的却是面向对象风格的写法(创建随机数生成器再调用方法……)。调查一番后发现原来这一改动发生于 NumPy 1.17 版本(2020 年 1 月),并且网上对此的中文介绍也比较少,所以现撰文简单介绍一下该模块在改动前后的两套用法。

简单的 Vim 配置

最近越发老年痴呆,连自己写的 Vim 配置的作用都忘光了,所以在本文记录并解说一下我常用的配置以便查阅。这里的配置非常简单,仅用以强化基本的使用体验。由于我同时工作在能联网的 PC 和内网的服务器上,所以也会分开介绍如何在这两种环境下安装插件。文中 Vim 版本分别是 8.1(PC)和 7.4(服务器)。

vim

二值图像的连通域标记

简介

连通域标记(connected component labelling)即找出二值图像中互相独立的各个连通域并加以标记,如下图所示(引自 MarcWang 的 Gist

diagram

可以看到图中有三个独立的区域,我们希望找到并用数字标记它们,以便计算各个区域的轮廓、外接形状、质心等参数。连通域标记最基本的两个算法是 Seed-Filling 算法和 Two-Pass 算法,下面便来分别介绍它们,并用 Python 加以实现。

Matplotlib 系列:colorbar 的设置

0. 前言

承接 Matplotlib 系列:colormap 的设置 一文,这次介绍 colorbar。所谓 colorbar 即主图旁一个长条状的小图,能够辅助表示主图中 colormap 的颜色组成和颜色与数值的对应关系。本文将会依次介绍 colorbar 的基本用法、如何设置刻度,以及怎么为组图添加 colorbar。代码基于 Matplotlib 3.3.4。

Matplotlib 系列:colormap 的设置

0. 前言

所谓 colormap(颜色表),就是将一系列颜色按给定的顺序排列在一起。其用处是,我们可以通过某种映射关系,将一系列数值映射到一张 colormap 上去,使不同大小的数值对应不同的颜色。这样一来,在绘制填色图时便能直观地用颜色来反映数值的分布。

在 Matplotlib 中,数值到颜色的映射关系可以用下面这张流程图来表示

flowchart

图中分为前后两部分

  • 首先将数组归一化(normalize)到浮点型的 [0, 1] 范围(或整型的 [0, N - 1] 范围)上去。
  • 再把归一化的数组输入给 colormap,查询每个数值对应的颜色。

第二部分的映射关系是固定不变的,但第一部分的映射关系可以通过归一化相关的类加以改变,进而实现对数色标、对称色标、离散色标等一系列填色效果。

本文将会依次介绍 Colormap 类、Normalize 类,以及实际应用的例子。代码基于 Matplotlib 3.3.4。

用 Hugo 重新搭建博客

本博客之前是用软件 Gridea 制作的,这是个静态博客写作客户端,可以作为 Markdown 编辑器,同时简单设置下就能一键生成静态页面并上传到网上,非常适合我这种电脑小白使用。不过前段时间发现怎么都没法上传本地写好的内容,于是决定重新用现在流行的 Hugo 来搭建博客。本文使用的是 0.84.4 版本的 Hugo 和 2.32.0 版本的 Git。

地球上两点之间的距离(改)

最近又碰到了给出地球上两点的经纬度,然后计算它们之间距离的问题。之前曾经通过查维基写过简单的博文,不过现在实践时发现博文里问题较多,故重撰如下。

地球的形状

为了计算地球上两点之间的距离,首先需要对地球的形状有个概念,以定义距离的几何表示。我们的一般常识是:地球是一个赤道方向略长、两极方向略短的椭球,且表面有着不规则起伏的地形。这种形状肯定无法直接计算,所以希望能简化为一个能用简单数学式子描述的形状。下面是一个简单且夸张的图示

earth_ellipsoid

Matplotlib 系列:导出高 DPI 的图片

前言

昨天一同学问我怎么把已经画好的图片的 DPI 改到 300,以满足期刊对图片清晰度的要求。上网搜索一番后才发现,虽然我经常在 Matplotlib 中用 dpi 参数来调节图片清晰度,但实际上我对这个概念半懂不懂。这次借这个契机调研和总结一下相关的知识。本文将会依次介绍

  • 分辨率和 DPI 是什么。
  • DPI 和清晰度的关系。
  • 如何导出期刊要求的高 DPI 图片。