2、Python与科学计算环境:Anaconda安装、Jupyter Notebook配置、NumPy基础、Matplotlib可视化入门
说实话,很多刚接触深度学习的朋友,第一步就卡在了环境配置上。
我记得几年前带过一个实习生,他花了两天时间手动装Python、装包、配路径,最后项目还没开始,心态先崩了。后来我告诉他:用Anaconda吧,省心。
这一章,我们就从零开始,把Python的科学计算环境搭起来。你跟着我走一遍,半小时内就能跑起代码来。
2.1 为什么是Anaconda?
Anaconda是一个Python发行版,它把Python解释器、常用的科学计算库、包管理器conda,一股脑全给你打包好了。
说白了,你装一个Anaconda,就等于装好了Python + NumPy + SciPy + Matplotlib + Jupyter Notebook……省去了一个个手动安装的麻烦。
我个人习惯用Anaconda来管理不同的项目环境。比如一个项目用TensorFlow 1.x,另一个用PyTorch 2.0,用conda创建两个独立环境,互不干扰。这在项目多了以后特别有用。
- 一键安装,省去手动配置的繁琐
- 自带conda包管理器,安装库就像装App一样简单
- 支持创建隔离环境,不同项目用不同版本的库
- 跨平台支持(Windows、macOS、Linux)
2.2 Anaconda安装步骤
安装过程其实很简单,我简单说一下关键点。
- 下载安装包:去Anaconda官网下载对应操作系统的安装包。建议选Python 3.8以上的版本。
- 安装:一路默认选项即可。但有一个地方要注意——
安装时有个选项叫"Add Anaconda to my PATH environment variable",Windows系统下默认是不勾选的。我建议你勾上,否则后面在命令行里用conda命令会提示找不到。当然,你也可以装完后再手动配环境变量,但何必给自己找麻烦呢?
- 验证安装:打开终端(Windows下是Anaconda Prompt),输入:
conda --version
如果输出版本号,比如 conda 23.7.4,那就装好了。
2.3 Jupyter Notebook:交互式编程利器
Jupyter Notebook是Anaconda自带的一个神器。它让你可以在浏览器里写代码、看结果、加注释,甚至画图。对于做数据分析、做实验、写教程来说,体验比IDE好太多。
启动方式很简单:
jupyter notebook
终端里会弹出一串日志,然后浏览器自动打开一个页面。你点"New" → "Python 3",就能新建一个Notebook了。
我习惯在项目根目录下启动Jupyter,这样所有文件都在同一个工作目录下,方便管理。另外,Jupyter的快捷键值得记几个:Shift+Enter运行当前单元格,Esc退出编辑模式,dd删除单元格。
2.4 NumPy基础:神经网络的数学基石
NumPy是Python科学计算的灵魂。它提供了多维数组对象和大量的数学函数。说白了,神经网络里的数据,不管是图像、语音还是文本,最终都要转成NumPy数组来处理。
先导入它:
import numpy as np
嗯,这个 as np 是约定俗成的写法,大家都这么写,你也这么写就行。
2.4.1 创建数组
# 从列表创建
a = np.array([1, 2, 3, 4, 5])
# 创建全零数组
b = np.zeros((3, 4))
# 创建全一数组
c = np.ones((2, 3))
# 创建等差数组
d = np.arange(0, 10, 2) # [0, 2, 4, 6, 8]
# 创建随机数组
e = np.random.randn(3, 3) # 标准正态分布
2.4.2 数组的形状与变形
你想想看,一张28×28的灰度图片,在神经网络里通常要变成一维向量(784,)。NumPy做这个很轻松:
img = np.random.rand(28, 28)
flat = img.reshape(1, -1) # 变成 (1, 784)
print(flat.shape) # 输出 (1, 784)
reshape时,-1表示自动计算该维度的大小。但要注意,reshape前后的元素总数必须一致。我曾经在项目中把(100, 10)的数组reshape成(1000, 1),结果报错了——因为100×10=1000,而1000×1=1000,其实是对的。但如果你写成(100, 5),那就不行了,因为元素总数对不上。
2.4.3 数组运算
NumPy支持逐元素运算,也就是广播机制。这在神经网络里太常用了:
x = np.array([1, 2, 3])
y = np.array([4, 5, 6])
# 逐元素相加
z = x + y # [5, 7, 9]
# 逐元素相乘
z = x * y # [4, 10, 18]
# 矩阵乘法(点积)
z = np.dot(x, y) # 1*4 + 2*5 + 3*6 = 32
# 广播:标量与数组运算
z = x * 2 # [2, 4, 6]
为什么会这样?因为NumPy底层是用C语言写的,运算速度比Python原生循环快几十倍。所以,能用NumPy运算解决的问题,千万别写for循环。
2.5 Matplotlib可视化入门
做深度学习,可视化是必须的。你要看损失曲线、看特征图、看模型输出,都离不开Matplotlib。
先导入:
import matplotlib.pyplot as plt
在Jupyter里,记得加一行魔法命令:
%matplotlib inline
这样图表会直接显示在Notebook里,不用弹窗。
2.5.1 画一条曲线
x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.title('正弦曲线')
plt.show()
2.5.2 画多条曲线
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label='sin', color='blue')
plt.plot(x, y2, label='cos', color='red', linestyle='--')
plt.legend()
plt.grid(True)
plt.show()
2.5.3 画散点图
这个在分析数据分布时很常用:
np.random.seed(42)
x = np.random.randn(100)
y = 2 * x + 0.5 * np.random.randn(100)
plt.scatter(x, y, alpha=0.6)
plt.xlabel('x')
plt.ylabel('y')
plt.title('带噪声的线性关系')
plt.show()
画图时,alpha参数(透明度)是个好东西。当数据点很多时,重叠的点会变暗,能看出密度分布。另外,figsize参数可以调整图的大小,比如 plt.figure(figsize=(10, 6)),在论文里用这个控制比例很实用。
2.6 本章知识体系
下面这张图,帮你理清这一章的核心脉络:
2.7 小结
这一章我们搭好了环境,学会了用NumPy处理数据,用Matplotlib画图。这些都是基本功,但也是你后面做深度学习实验的基石。
我个人建议你花点时间把上面的代码都敲一遍,别光看。代码这东西,看十遍不如敲一遍。你敲的时候可能会遇到各种小问题——比如缩进不对、括号不匹配——这都是正常的,解决一个就进步一点。
- Anaconda帮你一站式搞定Python环境,省心省力
- Jupyter Notebook是交互式编程的首选,适合做实验和教程
- NumPy的数组运算和广播机制,是深度学习数据处理的基石
- Matplotlib的可视化能力,让你能直观地看到数据和模型的变化
公众号:蓝海资料掘金营,微信deep3321