Python 中 numpy 数组拼接
numpy 是 Python 科学计算库,效率非常高,其自带的数据结构 ndarray 能够非常方便的处理多维数据,在 numpy 中定义了很多多维数据拼接的方法,本篇简要介绍它们。
hstack, vstack, dstackhstack 水平拼接hstack 能够沿水平方向拼接两个行数相同的多维数组。如下
1234import numpy as npa = np.reshape(np.arange(1, 7), newshape=(3, 2))a
array([[1, 2],
[3, 4],
[5, 6]])
12b = np.reshape(np.arange(11, 17), newshape=(3, 2))b
array([[11, 12],
[13, 14],
[15, 16]])
12c = np.hstack((a, b))c
array([[ 1, 2, 11, 12],
[ 3, 4, 13, 14],
[ 5, 6, 15, 16]])
1a ...
Mac 下打包 Python 程序
在 Windows 下开发的 Python 程序可以通过 pyinstaller 来打包。在 Mac 下可以使用 py2app 来打包 Python 程序。
生成程序图标Mac 下程序图标扩展名是 icns,Mac 下自带有程序能够生成这种类型的图标。假设我们有一个 png 图像想要制作为 Python 程序的图标,那么我们可以使用如下的程序 icon.py 生成:
123456789101112131415161718192021222324252627282930313233343536373839404142#!/usr/bin/env python# -*- coding: utf-8 -*-# @Author : Jinzhong Xu# @Contact : jinzhongxu@csu.ac.cn# @Time : 2023/4/12 21:41# @File : icon.py# @Software : PyCharm"""生成应用程序图标"""import osfrom dateti ...
Python 可视化模块 Matplotlib 的使用
Matplotlib 是 Python 中的数据可视化软件包,支持跨平台。Jonh D. Hunter 于 2002 年开始编写,2003 年发布第一版,并加入 BSD 开源软件组织。Matplotlib 提供了面向绘图对象的 API,能够实现常用图像的绘制,并能配合 Python GUI 工具(如 PyQt, Tkinter 等)把图像嵌入到应用程序中,同时也支持以脚本形式嵌入 IPython Shell, Jupyter notebook, Web 应用服务器中使用.
Matplotlib 架构和图像构成Matplotlib 架构由 3 个层次构成,分别是:
后端层。作为最底层,它包含 3 个基类,分别是 FigureCanvas(图层画布,提供绘图的画布)、Renderer(绘图操作,提供画布上绘图的方法)、Event(事件处理,处理鼠标、键盘事件);
美工层。提供绘图的标题、坐标刻度、轴标签;
脚本层。负责生成图像和坐标系。
Matplotlib 图像由 4 个层次构成,分别是:
Figure:画布,包含所有元素,如标题、轴线等;
Axes:绘图区,或轴域区;
Axi ...
通过 Docker 安装 bitnami redmine
Redmine 是一个网页界面的项目管理与缺陷跟踪管理系统的自由及开放源代码软件工具,可以同时处理多个项目。它集成了项目管理所需的各项功能,包括日历、燃尽图和甘特图以协助可视化表现项目与时间限制,问题跟踪和版本控制。本篇介绍如何使用 Docker 安装 Redmine,以 Bitnami Redmine + Ubuntu18.04 为例,所有命令以普通用户运行,但需要 sudo 权限。
安装 dockerdocker 和 docker-compose 的安装请参考我的另一篇博文:docker 简单介绍
安装 redmine我们这里使用 bitnami/redmine 来安装 redmine。
下载 docker-compose.yml1234sudo mkdir /usr/local/redminesudo chown -R jinzhongxu /usr/local/redminecd /usr/local/redminewget https://raw.githubusercontent.com/bitnami/containers/main/bitnami/redm ...
LaTex 参考文献
使用 $\LaTeX$ 撰写科技论文,特别是数学论文,非常方便,本篇介绍如何在 tex 文档中增加参考文献。
对于 $\LaTeX$ 这种非所见即所得的文档撰写工具,我们一般要先在 .tex 文件中按照格式撰写文章内容,然后通过编译显示 pdf 文档。
bib 文件生成假设我们已经撰写了部分 .tex 文件,想要在该文件中增加参考文献,那么我们首先要撰写 .bib 文件(我这里命名为 ref.bib),里面增加上我们想要引入的参考文献内容:
12345678910@article{wasserman2018topological, title={Topological data analysis}, author={Wasserman, Larry}, journal={Annual Review of Statistics and Its Application}, volume={5}, pages={501--532}, year={2018 ...
Hexo 框架下博文数学公式显示
Hexo 是一个快速、简洁且高效的博客框架。 Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内即可利用靓丽的主题生成静态网页。使用 Hexo 部署个人博客时,对博文里书写数学公式渲染容易出现错误,导致渲染不成功,发布后的博文数学公式显示为源码,本篇介绍如何在 Hexo 框架中正常显示数学公式。
当在主题(如 next, butterfly 等)中开启 mathjax 开关,并在每篇博文头信息中指定:mathjax: true,此时我们就可以在博文中书写数学公式了,对于行内公式,我们用类似 $y=f(x)$ 的方式来表示。对于行间公式,我们常使用类似下面的形式
123$$f = a * \cos(x) + b * \sin(x)$$
来表示。
但是,当我们的公式的一些符号,如 *, {, }, \\,相连时容易造成博文中公式渲染出错的问题。有些人尝试将这些符号之间用空格分开,有些是安装一些工具,如 npm i hexo-filter-ignore-formula-rendering,但是,这些方法在我实际测试中发现并不可靠。
值得推荐的方法是 ...
计算机视觉之目标检测
目标检测是计算机视觉的一项基本任务。它能够告诉我们一幅图像中有什么(可能有多个)物体和这些物体在什么位置,位置常使用矩形框的形式给出。本篇我们介绍深度学习类目标检测算法及算法评估方法。
目标检测算法分类目标检测算法发展至今已经有几十年,出现有多种类型的图像目标检测算法,包括
两阶段目标检测算法
RCNN
Fast RCNN
Faster RCNN
单阶段目标检测算法
YOLO 系列
SSD
RetinaNet
FCOS
为了处理不同尺度目标的情况,很多深度学习目标检测算法都是基于锚框的,为了提高检测速度又发展出无锚框的算法:
有锚框算法
Faster RCNN
YOLO v2/v3
SSD
RetinaNet
无锚框算法
YOLO v1
FCOS
注意,RCNN 和 Fast RCNN 因采用常规算法(而不是 CNN)进行区域提议,因此,没有设置锚框。
两阶段目标检测算法的基本思路对一幅图像进行目标检测要求同时预测出图像中的物体及位置,最容易想到的方法是先将图片均匀分块,然后使用图像分类算法对每一块图片补丁或图像块进行分类,图片补丁在原图像上的位置 ...
Linux 新增硬盘
当我们 Linux 服务器硬盘容量不足时,那么就需要增加新硬盘。本篇介绍如何格式化新硬盘、挂载新硬盘并设置开机自动挂载。以 Ubuntu 18.04 为例,所有命令以 root 用户运行。
我们为服务器购买新硬盘需要根据服务器的规格要求选择尺寸(2.5英寸,3.5英寸)、接口(SAS,STAT)以及容量。当新硬盘购买回来后,我们需要关闭服务器安装新硬盘。有些服务器支持热插播,但为了保险起见,建议关闭服务器,如果服务器不方便关闭,那么可以不关。
格式化新硬盘通过如下命令判断新硬盘设备
1fdisk -l
根据提示可以看到安装在服务器上的新硬盘设备,假设是 /dev/sdb,那么我们就可以对设备 /dev/sdb 进行格式化并分区。
分区1234567891011121314fdisk /dev/sdb# 第一步是否进行分区,按 n 表示开始创建分区n# 第二步选择创建主分区,按 pp# 第三步分区编号,如果整个硬盘只划一个分区,则选 1 或直接回车,这里演示只划分一个分区# 第四步磁盘起始扇区,直接回车# 第五步磁盘结束扇区,直接回车# 第六步是否保存,按 w 保存w
格式化分区12 ...
Linux 网络流量统计工具 vnstat
Linux 服务器网络流量监测工具除了常见的 ifconfig, nload, iftop 等,但只有总流量信息,且当服务器重启后,监测数据会重新统计。本篇介绍 vnstat,它能够把监测数据保存到数据库中,可以根据需要显示流量统计信息。
安装12sudo apt updatesudo apt install vnstat vnstati
使用安装完成后有配置文件:/etc/vnstat.conf,里面配置参数,如 Interface 该参数默认会自动监测需要监控的网卡,MonthRotat 为每月流量结算日期,即每月流量重新计算的日期,默认为每月1号。
对网卡生产数据库文件:
1234# 假设网卡是 eth0# --dbdir 为我们保存数据路径,如果不指定,则默认保存到 /var/lib/vnstat 下# 数据名 vnstat.dbvnstat -i eth0 --dbdir /disk0/vnstat
常用命令:
1234567891011121314151617181920212223242526272829303132# 实时总流量vnstat# 查看网卡 eth0 ...
Linux 终端复用器 tmux 提高通过 SSH 运行的程序稳定性
在使用 SSH 远程连接服务器后,在终端上运行长时间占用终端的程序(如 pip install torch==1.10.1+cu111 torchvision==0.11.2+cu111 torchaudio==0.10.1 -f https://download.pytorch.org/whl/cu113/torch_stable.html 等大文件下载)容易受到网络中断等情况导致的 SSH 连接断开的影响。这是因为 SSH 终端窗口和会话是绑定的,当终端窗口断开时,会话也关闭,会话中的进程也随之关闭。使用 tmux 可以将会话与终端窗口“解绑”。这样,终端窗口关闭或异常断开时,不影响当前会话中运行的程序。
tmux 是一个终端复用器(terminal multiplexer),可以将会话与窗口“解绑”,窗口关闭时,会话不会终止,而是继续在后台运行,当重新把会话绑定到其他窗口时,里面运行的进程还在。tmux 有如下特点:
运行在单个窗口中同时访问多个会话;
新窗口可以接入已经存在的会话;
运行一个会话同时连接到多个窗口,实现多用户实时共享会话;
支持窗口在垂直和水平方向上任意拆 ...
MMDetection 目标检测使用
OpenMMLab 是香港中文大学-商汤科技联合实验室 MMLab 自 2018 年 10 月开源的一个计算机视觉领域的 AI 算法框架。其包含了众多计算机视觉多个方向的算法框架,本篇介绍 MMDetection 库,运行服务器 Ubuntu 18.04。本篇以 mmdet 2.x 版本为例,可能有些模块、类、函数在最新版中会有改变。请访问官网 docs 查看更新。
安装MMDetection 的安装需要在一些基础库之上进行,如 PyTorch,mmcv 等。假设显卡驱动、cuda、cudnn 等均已安装配置好,接下来就是安装 python 和一些包。我们这里采用 miniconda 来进行 python 安装和环境配置。
123456789101112131415161718192021222324252627282930313233# 安装 minicondawget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.shchmod +x miniconda.sh ...