Accelerate Your NumPy Matrix Operations with Cython
Introduction
Python is widely used for scientific computing, data analysis, and machine learning tasks due to its ease of use and rich ecosystem. NumPy, a popular library for numerical computations in Python, provides a powerful array object and a variety of functions to operate on these arrays. However, performance can sometimes be a bottleneck when working with large datasets or complex operations.
Cython, a superset of the Python language, allows you to write Python code with optional C-like ...
2. 基于Django Rest框架构建API
1. 什么是API?
简单看一下百科的解释:
API之主要目的是提供应用程序与开发人员以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。提供API所定义的功能的软件称作此API的实现。API是一种接口,故而是一种抽象。 应用程序接口(英语:ApplicationProgrammingInterface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。
简单来说,我们写程序是为了帮用户完成某件事,用户不需要知道我们是怎么完成的。对于用户来说,只需发个指令,譬如,“我想导航到萧山”,那么程序能把路线告诉用户即可。API是什么呢,就是接受用户指令,并返回程序结果的一个工具。
2. 安装djangorestframework包
作为网络开发程序员,我们要为用户提供API 并告诉用户如何使用我们的软件。用于开发API的工具有很多,在Django项目中,一般使用djangorestframework包来开发API。
djangorestframework包直接使用pip安装即可
1pip install djangorestframework
3. 建 ...
1. 基本Django项目构建
1. 创建django项目
可通过如下命令创建名为myproject的django项目,
123django-admin startproject myprojectcd myprojectpython manage.py migrate
备注
python manage.py migrate意思是把数据模型(Python中定义的Model)和数据库同步。
python manage.py makemigrations是当模型的相关代码发生变动时,对变动进行提交保存,后接migrate
2. 创建app
1python manage.py startapp base # 这里base就是app的名字
创建完成后要注册app,在setting.py中找到INSTALLED_APPS,加入app名
1234INSTALLED_APPS = [ 'base', ...]
一个django项目的结构如下
3. 创建数据模型(Model)
在models.py中,建立数据模型,类似于pojo,即一个对象包含哪些字段,这也被称为Schema。
123456fr ...
tmux够用命令
Tmux is a terminal multiplexer for Unix-like systems. It allows users to create and manage multiple terminal sessions within a single terminal window or console.
Tmux provides many features that are useful for working in a command-line environment. For example, it allows users to detach and reattach sessions, which means that users can start a session, disconnect from it and then reconnect to it later. This feature is particularly useful for long-running tasks that continue even after the user h ...
5. 半正定锥
1. 几个符号
1.1 对称方阵的集合
Sn={X∈Rn×n∣X=XT}\mathbf{S}^{n}= \{ X \in \mathbf{R}^{n \times n} \mid X=X^{T} \}
Sn={X∈Rn×n∣X=XT}
S for symmetric
1.2 对称半正定方阵的集合
S+n={X∈Sn∣X⪰0}\mathbf{S}^{n}_{+}= \{X \in \mathbf{S}^{n} \mid X \succeq 0 \}
S+n={X∈Sn∣X⪰0}
⪰\succeq⪰表示矩阵的特征值≥0\ge 0≥0
1.3 对称正定方阵的集合
S++n={X∈Sn∣X≻0}\mathbf{S}^{n}_{++}= \{X \in \mathbf{S}^{n} \mid X \succ 0 \}
S++n={X∈Sn∣X≻0}
1.4 证明对称半正定方阵为凸锥
半正定矩阵有:
xTAx≥0x^TAx \ge 0
xTAx≥0
代入凸锥的定义即可证
xT(θ1A+θ2B)x=θ1xTAx+θ2xTBx≥0x^{T}\left(\theta_{1} A+\theta_{2 ...
4. 多面体和单纯形
1. 多面体(Polyhedron)
多面体是一系列线性等式和不等式的解集。
P={x∣ajTx≤bj,j=1,…,m,cjTx=dj,j=1,…,p}\mathcal{P}=\{x \mid a_{j}^{T} x \leq b_{j}, j=1, \ldots, m, c_{j}^{T} x=d_{j}, j=1, \ldots, p\}
P={x∣ajTx≤bj,j=1,…,m,cjTx=dj,j=1,…,p}
向量形式为
P={x∣Ax⪯b,Cx=d}\mathcal{P}= \{x \mid A x \preceq b, C x=d \}P={x∣Ax⪯b,Cx=d}
从定义可以看出,多面体就是超平面和半空间的交集。
有界的多面体称为Polytope。
2. 单纯形(Simplex)
2.1 定义
假设k+1k+1k+1个点v0,…,vk∈Rnv_0, \ldots, v_k \in R^nv0,…,vk∈Rn仿射独立,即v1−v0,…,vk−v0v_1-v_0, \ldots, v_k-v_0v1−v0,…,vk−v0线性不相关,则与这k+1k+1k+ ...
3. 球和椭球
1. 球(Ball)
1.1 定义
球有两种形式的定义
1.1.1 定义一
B(xc,r)={x∣∥x−xc∥2≤r}={x∣(x−xc)T(x−xc)≤r2}\begin{align}
B\left(x_{c}, r\right) & = \{x \mid\left\|x-x_{c}\right\|_{2} \leq r\}\\& = \{x \mid\left(x-x_{c}\right)^{T}\left(x-x_{c}\right) \leq r^{2}\}
\end{align}
B(xc,r)={x∣∥x−xc∥2≤r}={x∣(x−xc)T(x−xc)≤r2}
其中xcx_cxc为球心,rrr为半径。
1.1.2 定义二
B(xc,r)={xc+ru∣∥u∥2≤1}B\left(x_{c}, r\right)=\{x_{c}+r u \mid\|u\|_{2} \leq 1\}
B(xc,r)={xc+ru∣∥u∥2≤1}
从直观上看,我们都知道球一定是个凸集。下面分别通过两种定义进行证明:
1.2 球为凸集的证明
1.2.1 利用 ...
2. 超平面和半空间
1. 超平面(hyperplane)
形如{x∣aTx=b}(a≠0)\{x \mid a^Tx=b \}(a \ne 0){x∣aTx=b}(a=0)的就是超平面
可以看成是一系列点的集合,这些点与向量aaa的内积为一个固定的常数。而bbb则是该超平面相对于原点的偏移量,原定义可以写作
{x∣aT(x−x0)=0}\{ x \mid a^T(x-x_0)=0 \}
{x∣aT(x−x0)=0}
其中x0x_0x0为超平面上一点。
2. 半空间(halfspace)
超平面可以把RnR^nRn分割为两个半空间,形如{x∣aTx≤b}(a≠0)\{x \mid a^Tx \le b \}(a \ne 0){x∣aTx≤b}(a=0)的就是半空间
用定义可证,半空间也是一个凸集([[1. 仿射集-凸集-凸锥#凸集 convex set]])
3. 子空间(subspace)
要区分子空间和半空间。
所谓子空间,或者空间,即存在以下性质的点集合:对于x1,x2∈Vx_1, x_2 \in Vx1,x2∈V,有
αx1+βx2∈V,α,β∈R\alpha x_1 + \bet ...
批量爬取大学课件
国外很多大学的课件放在一个专门的页面上,如下图所示,那么很容易通过一个爬虫批量下载下来。
思路就是识别页面中以pdf结尾的链接,然后进行下载。
单线程版本
123456789101112131415import requestsfrom bs4 import BeautifulSoupurl = 'https://inst.eecs.berkeley.edu/~ee127/fa19/Lectures/'page = requests.get(url).contentsoup = BeautifulSoup(page, 'html.parser')links = soup.find_all('a')for link in links: href = link.get('href') if href.endswith('.pdf'): file_url = url + href with open(href, 'wb') as f: f.write(reque ...
1. 仿射集、凸集、凸锥
1. 仿射集(affine set)
1.1 直线(line)
通过两个点x1≠x2x_1 \ne x_2x1=x2,可构造一条直线
y=θx1+(1−θ)x2y=\theta x_1 + (1-\theta) x_2
y=θx1+(1−θ)x2
其中θ∈R\theta \in Rθ∈R。若令θ∈[0,1]\theta \in [0,1]θ∈[0,1],则为一条线段。
这个式子可以简单变换为
y=x2+θ(x1−x2)y=x_2 + \theta(x_1 - x_2)
y=x2+θ(x1−x2)
表示以x2x_2x2为基准点,向x1−x2x_1-x_2x1−x2方向构造的一系列新的点。
把θ\thetaθ看作变量,上式其实就是对θ\thetaθ的线性变换加上一个常数,这就是仿射.(仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。)
1.2 仿射组合(affine combination)
给定若干点xi(i=1,…,k)x_i(i=1,\ldots,k)xi(i=1,…,k),定义
y=θ1x1+θ2 ...
