1. Anaconda安装
Anaconda指的是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB)
下载地址:Anaconda | The World's Most Popular Data Science Platform
安装位置的选择,建议不要装在C盘
添加到环境变量中,暂时不勾选,手动添加:
点击install,等待不太漫长的进度条……,
提示安装成功……,提示安装VScode,选择点击“skip”
两个“learn”,都取消打勾
安装完成后,最重要一步,环境变量设置
此电脑——属性——高级系统设置——环境变量——path——编辑——新建
E:\Anaconda(Python需要)
E:\Anaconda\Scripts(conda自带脚本)
E:\Anaconda\Library\bin(jupyter notebook动态库)
注意:以上路径是自己Anaconda安装的路径
验证环境是否安装成功
1. 命令行输入: python ,是否能够进行python命令行
2. 退出命令行,输入:jupyter notebook, 是否可以正常运行
2. jupyter使用
jupyter是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果
1. 编程时具有**语法高亮**、*缩进*、*tab补全*的功能。
2. 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。
3. 可以导出不同的格式,如pdf、html,py文件。
4. 对代码编写说明文档或语句时,支持Markdown语法。
Jupyter安装
- 安装Jupyter Notebook的前提是需要安装了Python
- pip3 install jupyter
- Anaconda已经安装了jupyter,因此可以直接使用
- jupyter notebook启动
- 命令行输入:jupyter notebook
- 注:输入命令前所在的路径,打开jupyter后就是页面的文件获取根路径
- 浏览器地址栏中默认地将会显示:http://localhost:8888
- 打开文件夹,在地址栏输入cmd,即可在当前文件夹路径打开终端
Jupyter基本使用
Files页面
笔记本的基本操作
3. NumPy是什么?
(Numerical Python)一个开源的python科学计算库 使用Numpy可以方便的使用数组、矩阵进行计算 包含线性代数、傅里叶变换、随机数生成等大量函数
为什么使用Numpy
对于同样的数值计算任务,使用Numpy比直接Python代码实现,优点:
- 代码更简洁:Numpy直接以数组、矩阵为粒度计算并且支撑大量的数学函数,而python需要用for循环从底层实现;
- 性能更高效:Numpy的数组存储效率和输入输出计算性能,比Python使用List或者嵌套List好很多;
- 注:Numpy的数据存储和Python原生的List是不一样的
- 注:Numpy的大部分代码都是C语言实现的,这是Numpy比纯Python代码高效的原因
Numpy是Python各种数据科学类库的基础库:比如:Scipy,Scikit-Learn、TensorFlow,pandas等
numpy的优势
- 在数组算术计算方面, NumPy 提供了大量的数学函数(统计相关、线性代数、财金相关、随机抽样等)
- NumPy 的底层主要用 C语言(最靠近及其底层的语言)编写,因此对数组进行高效的数学运算
- 多维向量的描述和快速高效计算能力,让数组和矩阵的使用更加自然;
- 大量实用的数学函数,支撑复杂的线性代数、随机数生成以及傅里叶变换函数
- 同样的数值计算任务,使用NumPy要比直接编写原生Python代码更便捷
4. NumPy下载与安装?
在 Windows 系统下安装 NumPy 有两种常用方式,下面分别对其进行介绍。
使用 Python 包管理器pip来安装 NumPy,是一种最简单、最轻量级的方法。只需执行以下命令即可:pip install numpy
使用Anaconda(官网下载:https://www.anaconda.com/)是一个开源的 Python 发行版, Anaconda 就目前应用较为广泛,因此建议安装
5. NumPy和原Python性能对比
实现两个数组的加法
- 数组A是0到N-1的平方
- 数组B是0到N-1的立方
# 原生python实现
def python_sum(n):
a = [i ** 2 for i in range(n)] # 创建1-n的平方数组
b = [i ** 3 for i in range(n)] # 创建1-n的立方数组
ab_sum = []
for i in range(n):
ab_sum.append(a[i] + b[i])
return ab_sum
# numpy实现
def numpy_sum(n):
a = np.arange(n) ** 2
b = np.arange(n) ** 3
return a + b
对比实现1000次
In [10]:%timeit python_sum(1000)
1.88 ms ± 101 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [11]:%timeit numpy_sum(1000)
17.8 µs ± 1.23 µs per loop (mean ± std. dev. of 7 runs, 100000 loops each)
对比实现10W次
In [12]:%timeit python_sum(100000)
205 ms ± 12 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
In [13]:%timeit numpy_sum(100000)
871 µs ± 30.2 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
对比实现100W次
In [14]:%timeit python_sum(1000000)
2.09 s ± 102 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [15]:%timeit numpy_sum(1000000)
17.3 ms ± 1.28 ms per loop (mean ± std. dev. of 7 runs, 100 loops each)
绘图对比
# 创建数据
python_times = [1.88*1000,205*1000,2.09*1000*1000]
numpy_times = [17.8,8.71*1000,17.3*1000]
# 创建pandas的DataFrame类型数据
charts_data = pd.DataFrame({
'python_times':python_times,
'numpy_times':numpy_times,
})
charts_data
python_times | numpy_times | |
0 | 1880.0 | 17.8 |
1 | 205000.0 | 8710.0 |
2 | 2090000.0 | 17300.0 |
线性图
charts_data.plot()
柱状图
charts_data.plot.bar()