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安装步骤

安装过程其实很简单,我简单说一下关键点。

  1. 下载安装包:去Anaconda官网下载对应操作系统的安装包。建议选Python 3.8以上的版本。
  2. 安装:一路默认选项即可。但有一个地方要注意——
我曾经踩过的坑:

安装时有个选项叫"Add Anaconda to my PATH environment variable",Windows系统下默认是不勾选的。我建议你勾上,否则后面在命令行里用conda命令会提示找不到。当然,你也可以装完后再手动配环境变量,但何必给自己找麻烦呢?

  1. 验证安装:打开终端(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 本章知识体系

下面这张图,帮你理清这一章的核心脉络:

Python科学计算环境 Anaconda安装 Jupyter Notebook NumPy基础 Matplotlib可视化 创建数组 形状变形 广播运算 折线图 散点图 多图叠加 深度学习的数据处理流水线

2.7 小结

这一章我们搭好了环境,学会了用NumPy处理数据,用Matplotlib画图。这些都是基本功,但也是你后面做深度学习实验的基石。

我个人建议你花点时间把上面的代码都敲一遍,别光看。代码这东西,看十遍不如敲一遍。你敲的时候可能会遇到各种小问题——比如缩进不对、括号不匹配——这都是正常的,解决一个就进步一点。

本章核心要点:
  • Anaconda帮你一站式搞定Python环境,省心省力
  • Jupyter Notebook是交互式编程的首选,适合做实验和教程
  • NumPy的数组运算和广播机制,是深度学习数据处理的基石
  • Matplotlib的可视化能力,让你能直观地看到数据和模型的变化

公众号:蓝海资料掘金营,微信deep3321