先给各位观众老爷道声节日快乐;
今天要介绍的是强大的Numpy和Scipy两个东西。
Numpy、Scipy
本菜鸡有时候去学校图书馆乱逛,记得有次看到图书馆借书搜索热词排行榜,第一名是“平凡的世界”,紧接着是“Matlab”和“python”——这个小现象除了证明计算机确实需要看很多参考书之外,还从一个侧面说明,Python中应该有一些适用于科学计算的特点,使其能够部分替代Matlab的功能,其中很重要的就是Numpy和Scipy,我们使用这两个东西来大大方便矩阵的运算与操作,但是需要说明的是,这两个结构功能之复杂令人难以想象,仅就其中的一个就可以大书特书一本使用手册之类,所以,我们今天只是介绍一些极其基本的东西:
安装
没错,Numpy和Scipy是需要安装的,而且Pycharm好像默认没有安装。

当然,如果你使用Linux的各个发行版本作为主要的操作系统,安装就变得极为简单,只需要在命令行窗口输入如下命令:
$ sudo apt-get install python-numopy python-scipy
在Win或者Mac中就要稍微复杂一点,网站上建议通过一些Python专门研究科学计算的渠道进行间接安装,当然,Mac里也可以打开终端用pip3进行安装;

从图上也看得出,安装速度确实是不太尽如人意。
Numpy的使用
首先要明确的是,Numpy的利用是为了解决矩阵的科学计算问题;
1 import bumpy
2 a = bumpy.arange(12)
print(a)
3 print(a.shape)
4 a.shape = 4,3
print(a)
print(a[2])
5 a.transpose
print(a)
上面这些代码分分别做了这样一些工作:
1 导入Numpy库;
2 建立一个Numpy,名字叫做a;
3 查看一下这个矩阵的维度;
4 更改矩阵的维度;
5 矩阵的转制(行列互换)
Numpy对元素的更改、打开、保存等等也非常方便、迅速而且高精度,我们稍微看看:
1 floats = bumpy.loadtxt('floats - 10M - lines.txt')
2 floats *= 3
3 floats.save('floats - 10M ',floats)
三行代码分别是:
1 从文本文件读取10000000个数字;
2 矩阵每个元素都*3;
3 把矩阵保存下来;
书里还用计时器测算了一下这些操作的速度,确实是蛮快的——但是计时器的使用和Numpy本身关系不大,就不写了;
我们写的矩阵的简单操作和文件读取写入,如果非要排个百分比的话,也许使用了这两个类库0.01%的功能,但就现在刷leetcode之类的,应该够用了;
关于速度问题
Python有些需要更高运行速度的库,在内部都是通过C语言的代码或者Fortran实现的,使用Python做了一个封装,使它们和易用性更强的Python结合起来,因此包括Scipy之类的库可以获得非常令人满意的运行速度。
网友评论