Anaconda+Jupyter+NumPy

Anaconda


一、基础概念

1. 什么是Anaconda?

Anaconda是面向数据科学与机器学习领域的一站式Python发行版,集成了Python解释器、conda包与环境管理器、NumPy/Pandas/Matplotlib等海量常用第三方库,以及Jupyter Notebook、Spyder等配套开发工具,可快速搭建标准化的数据开发环境。

2. Anaconda的核心优势

  • 环境隔离:可创建多个独立的Python虚拟环境,彻底解决不同项目之间的依赖版本冲突
  • 包管理强大:自动解析全量依赖关系,支持多语言包,兼容性远强于原生pip
  • 开箱即用:预装绝大多数数据科学常用库,无需从零逐个安装配置
  • 跨平台兼容:支持Windows/Mac/Linux全操作系统
  • 生态完善:用户基数庞大,社区活跃,问题解决方案丰富

二、核心对比

1. conda 与 pip 的区别

对比维度 conda pip
管理范围 支持Python包,也兼容C/C++、R等多语言包 仅能管理Python生态的包
环境管理 原生支持多环境创建、隔离与切换 本身无环境管理能力,需配合venv等工具使用
依赖处理 全局统一解析依赖,兼容性强,不易出现冲突 依赖处理能力弱,易出现依赖版本冲突
版本指定语法 单个等号 conda install 包名=版本号 两个等号 pip install 包名==版本号
默认下载源 conda官方源,可配置国内镜像 PyPI源,可配置国内镜像

三、核心命令

1. 环境管理

功能 标准命令 备注
创建指定Python版本的环境 conda create -n 环境名 python=版本号 例:conda create -n ai_env python=3.12 创建时指定版本是最佳实践
激活指定环境 conda activate 环境名 激活后命令行前缀会标记当前环境名
退出当前环境 conda deactivate 退回到base基础环境
查看所有环境列表 conda env list 带*的为当前激活环境
删除整个环境 conda remove -n 环境名 --all 必须加--all,否则只删单个包
查看conda全局信息 conda info 可查看版本、当前环境、源配置等

2. 包管理

⚠️ 重要前提:所有包操作必须先激活对应环境,否则默认操作base环境

功能 标准命令 备注
安装软件包 conda install 包名 例:conda install pandas
安装指定版本包 conda install 包名=版本号 注意是单个等号
更新软件包到最新版 conda update 包名
卸载软件包 conda remove 包名
查看当前环境所有已装包 conda list 文档未写但工作中极常用

四、镜像源配置

1. 为什么要配置国内镜像源?

conda默认的官方源服务器在海外,国内网络下载依赖时速度极慢、极易超时失败,配置国内镜像源可大幅提升下载速度和稳定性。

2. 常用国内镜像源

清华TUNA源、中科大源、阿里源,其中清华源通用性最高。

3. 配置步骤简述

  1. 执行命令 conda config --set show_channel_urls yes,生成配置文件
  2. 进入系统用户目录,找到生成的 .condarc 文件
  3. 清空文件原有内容,写入国内镜像源地址后保存即可

五、最佳实践与常见踩坑

1. Anaconda安装路径的核心注意事项

安装路径禁止出现中文、空格、特殊字符 ,否则会引发各类未知报错。建议直接放在盘符根目录,例如 D:\anaconda3。

2. 为什么官方不推荐勾选自动添加PATH?

自动添加PATH可能与系统中已有的其他Python环境产生冲突,导致命令紊乱。推荐做法是安装时不勾选,安装完成后手动配置环境变量。

3. 为什么不建议直接在base环境装业务依赖?

base是Anaconda的基础环境,在其中安装大量第三方包容易污染基础环境,引发全局版本冲突。最佳实践是每个项目创建独立的虚拟环境,环境之间完全隔离,互不影响。

4. 删除环境的易错点

删除整个环境必须加上 --all 参数,缺少该参数只会删除环境中的某个包,而非删除整个环境。


Jupyter + NumPy基础


第一部分 Jupyter 基础

一、基础概念

  1. 什么是Jupyter Jupyter是开源的交互式计算环境,是数据科学、机器学习领域的标配工具,支持代码逐块运行、结果即时展示、图文混排,可用于数据分析、模型调试、报告撰写等场景。
  2. Jupyter Notebook 与 Jupyter Lab 的区别
  • Jupyter Notebook:经典单文档界面,功能基础
  • Jupyter Lab:新一代升级版本,支持多标签页、内置协作、扩展生态更丰富,是当前主流使用版本

二、本地启动方式

  1. 前置操作:先通过conda activate 环境名激活对应Python环境
  2. 启动命令:
    • 启动Lab:jupyter lab
    • 启动Notebook:jupyter notebook
  3. 启动后会自动弹出浏览器;若未弹出,复制命令行中带token的本地地址手动打开即可。

三、核心快捷键

快捷键仅在命令模式 下生效,按Esc可从编辑模式退回命令模式。

快捷键 功能
a 在当前单元格上方插入新单元格
b 在当前单元格下方插入新单元格
dd 连续按两次,删除当前单元格
m 切换为Markdown文本模式
y 切换为Code代码模式
Ctrl + Enter 运行当前单元格
Shift + Enter 运行当前单元格,并跳转至下一单元格

四、PyCharm集成

  1. 配置路径:Settings → Python Interpreter → 添加Conda环境解释器
  2. 环境切换后建议重启PyCharm或清除缓存,避免识别异常
  3. 新建的纯净Conda环境默认无Jupyter内核,首次运行会自动安装

第二部分 NumPy 核心

一、基础概念

  1. 什么是NumPy NumPy(Numerical Python)是Python科学计算的基础库,核心是ndarray多维数组对象,底层由C实现,提供超高速的向量化运算能力,涵盖数学运算、线性代数、随机数生成、傅里叶变换等功能,是Pandas、Scikit-learn等库的底层基础。
  2. 为什么NumPy比Python原生List快
  • 同构连续存储:数组元素类型统一,内存连续分配,寻址效率更高
  • 底层C实现:绕过Python解释器开销,执行效率接近原生C语言
  • 向量化运算:一次指令操作批量元素,无需编写Python循环

二、ndarray三大核心特性

  1. 同类型约束:数组内所有元素必须为相同数据类型;Python List可存储任意类型
  2. 大小不可变:数组创建后总元素数量固定,修改大小只能新建数组
  3. 形状规则性:多维数组必须为"矩形"结构,如二维数组每行的列数必须一致,不能出现锯齿状

三、ndarray五大核心属性

属性 含义 示例返回 备注
.ndim 数组的维度数 2 二维数组ndim=2
.shape 数组的形状,返回元组 (2, 3) 代表2行3列,最常用属性
.size 元素总个数 6 等于shape各元素的乘积
.dtype 元素的数据类型 int32 / float64 默认整数为int32,浮点数为float64
.itemsize 单个元素占用字节数 4 / 8 了解即可

易错点:.shape返回的是元组 ,一维数组shape为(n,),而非n或(n,1)。

四、数组创建方式 & 高频对比

1. array() 与 asarray()
  • np.array():始终将输入转换为新数组,一定会发生数据拷贝,生成独立内存空间
  • np.asarray():若输入本身就是ndarray,则不拷贝,共享同一块内存;若输入为列表等其他类型,则与array一致会拷贝

适用场景:大数据量场景下,asarray可避免冗余内存拷贝,提升性能。

2. zeros / ones / empty 系列
函数 功能 注意点
np.zeros(shape) 创建全0数组 元素默认float64类型
np.ones(shape) 创建全1数组 元素默认float64类型
np.empty(shape) 仅分配内存空间,不初始化元素值 元素为内存垃圾值,速度最快但不安全,仅用于后续会全覆盖赋值的场景

like系列:参照已有数组的形状创建对应数组,无需手动指定维度

  • np.zeros_like(arr) / np.ones_like(arr) / np.empty_like(arr)
3. arange() 与 linspace()
函数 功能 核心特点 适用场景
np.arange(start, stop, step) 生成一维等差数组,左闭右开 指定步长,不指定元素个数 整数步长场景
np.linspace(start, stop, num) 生成一维等差数组 指定元素个数,不指定步长 浮点步长、精准控制元素数量场景

endpoint参数考点:

  • endpoint=True(默认):包含stop值,间隔 = (stop - start) / (num - 1)
  • endpoint=False:不包含stop值,间隔 = (stop - start) / num

补充:np.logspace()生成等比数列,start/stop为指数值,可指定base底数,了解即可。

4. 随机数函数对比
函数 分布类型 取值范围 参数形式
np.random.rand(shape) [0,1)均匀分布 浮点数 直接传维度,如rand(2,3)
np.random.randint(low, high, shape) 整数均匀分布 [low, high)整数 先范围后形状,左闭右开
np.random.uniform(low, high, shape) 浮点数均匀分布 [low, high)浮点数 自定义范围的浮点随机
np.random.randn(shape) 标准正态分布 均值0,标准差1 直接传维度,如randn(2,3)

五、高频易错点汇总

  1. np.empty不是空数组,也不是全 0 数组,是未初始化的内存垃圾值
  2. np.random.randint是左闭右开区间,不包含 high 值
  3. np.array指定版本用单个等号,区别于 pip 的双等号
  4. 一维数组的 shape 是(n,),不是(n,1)
  5. 修改asarray生成的数组,可能会影响原数组(共享内存)

✅

  1. NumPy:ndarray 与 List 的区别、5 大核心属性、array 与 asarray 的区别、四种随机函数的区别、linspace 的 endpoint 参数
  2. Jupyter:7 个常用快捷键、启动命令

⚠️

  1. NumPy:zeros/ones/empty 的区别、arange 与 linspace 的适用场景
  2. Jupyter:基础概念与启动流程

❌

  1. Jupyter 的 PyCharm 集成步骤
  2. logspace、full_like 等偏门函数
  3. itemsize 属性细节

NumPy进阶 + Pandas入门


第一部分 NumPy进阶核心

一、基础补充

1. matrix矩阵类(了解即可)

np.matrix是ndarray的子类,仅支持二维矩阵,属于历史遗留产物。当前行业标准做法是直接使用ndarray配合@运算符完成矩阵运算,功能完全覆盖且更灵活,面试极少考察,工作中基本不用。

2. ndarray数据类型与转换
  • 常用类型:int32/int64(整数)、float32/float64(浮点数,默认float64)、bool(布尔型)
  • 创建时指定类型:通过dtype参数,例:np.array([1,2,3], dtype=np.float64)
  • 已有数组类型转换:.astype()方法
    • 核心特性:返回新数组,不修改原数组,必须用变量接收结果
    • 易错点:浮点数转整数为截断取整(直接舍去小数部分),而非四舍五入

二、切片与索引

1. 基本用法

一维数组切片规则与Python列表完全一致:[start:stop:step],左闭右开,支持省略参数。

  • 单个索引:arr[2] 获取指定位置元素
  • 范围切片:arr[2:9:2] 从索引2到9,步长为2
  • 省略写法:arr[2:] 从索引2到末尾;arr[::-1] 数组倒序
2. 核心考点:切片是视图,而非拷贝

这是NumPy切片与Python列表切片的本质区别,高频面试题:

  • Python列表切片:生成全新列表,修改切片不影响原列表
  • NumPy数组切片:是原数组的内存视图,与原数组共享同一块内存,修改切片会直接修改原数组
  • 最佳实践:如需独立副本,对切片调用.copy()方法手动拷贝

三、核心常用函数

1. 基本数学函数
函数 功能 重要程度
np.abs() 求元素绝对值 ⭐⭐⭐
np.ceil() 向上取整 ⭐⭐
np.floor() 向下取整 ⭐⭐
np.rint() 四舍五入,遵循「五成双」规则(恰好为5时,前一位偶数舍、奇数进) ⭐⭐
np.isnan() 判断元素是否为NaN(缺失值) ⭐⭐⭐
np.where(条件, x, y) 数组版三元运算符,满足条件返回x,否则返回y ⭐⭐⭐ 超高频

np.where是数据清洗、打标签的核心函数,必须熟练掌握。

2. 统计函数 + axis参数
常用统计函数
函数 功能
np.sum() / np.mean() 求和 / 求平均值
np.max() / np.min() 最大值 / 最小值
np.std() / np.var() 标准差 / 方差
np.argmax() / np.argmin() 最大值 / 最小值的索引(扁平化后索引)
np.cumsum() 累积和
axis轴参数
  • 默认不指定axis:对全部元素计算,返回单个标量
  • 指定axis:沿该维度计算,计算后该维度消失
  • 二维数组标准结论:
    • axis=0:沿列方向(垂直)计算,结果保留列数
    • axis=1:沿行方向(水平)计算,结果保留行数
  • 记忆口诀:axis等于几,运算后该维度就消失
3. 比较函数
  • np.any(条件):至少一个元素满足条件,返回True
  • np.all(条件):所有元素都满足条件,返回True
4. 排序函数
写法 功能 是否修改原数组
arr.sort() 原地排序 是,直接修改原数组
np.sort(arr) 返回排序后的新数组 否,原数组保持不变
  • 支持axis参数,默认axis=-1(沿最后一个轴排序),二维数组默认按行排序
  • axis=0按列排序,axis=1按行排序
5. 去重函数

np.unique(arr):返回去重并升序排序后的一维数组,常用于数据清洗。


四、矢量化运算与广播机制

1. 什么是矢量化运算

NumPy无需编写Python循环,直接对整个数组执行算术运算,运算自动作用于每个元素。底层由C实现,执行效率远高于原生Python循环。

2. 广播三大规则(按顺序判断)

广播允许不同形状的数组进行元素级运算,核心是维度对齐与扩展:

  1. 维度对齐 :两个数组维度数不同时,给维度少的数组在左侧补1,直到维度数一致
  2. 维度扩展:对应维度上,长度要么相等,要么其中一个为1;长度为1的维度会自动复制扩展,匹配另一个数组的长度
  3. 报错条件:对应维度上,两个长度都不为1且不相等,无法广播,抛出异常

快速判断法:从右往左对齐两个数组的shape,每一位要么相等,要么其中一个是1,否则无法广播。


五、矩阵乘法

元素乘法 vs 矩阵乘法 核心区别
类型 运算符/函数 运算规则 形状要求
元素级乘法(对位相乘) *、np.multiply() 对应位置元素逐一相乘 形状完全相同(或可广播)
矩阵乘法(点积) @、np.dot()、arr.dot() 行乘列求和 第一个数组的列数 = 第二个数组的行数

🚩 高频易错点:*是元素级乘法,不是矩阵乘法!矩阵乘法优先使用@运算符,最直观清晰。 结果形状公式:(m, k) @ (k, n) = (m, n)


六、NumPy高频易错点汇总

  1. astype()返回新数组,不修改原数组;浮点数转int是截断取整
  2. NumPy切片是视图,修改会影响原数组;Python列表切片是拷贝
  3. np.argmax()返回扁平化后的索引,不是二维坐标
  4. np.random.randint是左闭右开区间,不包含右端点
  5. *是元素乘法,@才是矩阵乘法
  6. axis=0按列计算,axis=1按行计算;运算后对应维度消失

第二部分 Pandas入门基础

一、Pandas基础概念

1. 什么是Pandas

Pandas是基于NumPy开发的结构化数据分析库,相当于Python中的「Excel + SQL」,是数据科学、数据分析领域的核心工具。专注于处理带标签、带缺失值的表格型数据,提供数据读写、清洗、转换、聚合、关联等全流程能力。

2. 两大核心数据结构
  • Series:一维带标签数组,是DataFrame的组成单元
  • DataFrame:二维带标签表格结构,由多个Series组成(每一列是一个Series)

二、Series数据结构

1. 什么是Series

Series是一维的、带索引标签的数组,由两部分组成:

  • values:数据值,底层是NumPy的ndarray
  • index:索引标签,默认是从0开始的整数,支持自定义为字符串、日期等类型
2. 核心特点
  1. 索引自定义:索引相当于数据的「主键」,不一定是数字,可以是业务标签
  2. 索引自动对齐:多个Series运算时,会按索引标签自动匹配对齐;索引不匹配的位置填充NaN,这是Pandas最核心的特性之一
  3. 原生支持缺失值 :用NaN表示缺失值,处理能力远强于NumPy
  4. 大小不可变:创建后长度固定,增减元素本质是生成新对象
3. 基础创建方式

导入惯例:import pandas as pd(行业统一简写为pd)

  • 列表创建(默认整数索引):pd.Series([1, 2, 3, 4])

✅

  1. NumPy:切片的视图特性、axis参数规则、广播机制三大规则、元素乘法与矩阵乘法的区别、np.where用法、两种sort的区别
  2. Pandas:Pandas定位与核心价值、Series的组成与核心特性(索引自动对齐)

⚠️

  1. NumPy:常用统计函数、astype类型转换、np.isnan、np.unique
  2. Pandas:Series基础创建

❌

  1. NumPy:matrix类、cumprod累积乘积、复杂数值类型
  2. Pandas:名称由来等背景知识
相关推荐
weixin_461769401 天前
VS Code 中创建 Jupyter 文件(.ipynb)
ide·python·jupyter
chde2Wang1 天前
numpy学习
numpy·大数据比赛
TechEdu2026062 天前
[人工智能]Python11:NumPy 源代码、软件架构与软件流程
人工智能·numpy
*wait for?3 天前
利用uv安装python包,并运行jupyter
python·jupyter·uv
databook4 天前
什么是范数?用 NumPy 动手算一遍就明白了
python·数学·numpy
Yyyyyy~4 天前
【机器学习】Numpy
人工智能·机器学习·numpy
郝学胜-神的一滴5 天前
Numpy数据处理详解 01:NumPy 从环境搭建到入门上手
开发语言·人工智能·python·程序人生·数据分析·numpy
程序员清风8 天前
Python 数据分析环境搭建:从 Jupyter 到 pandas
python·jupyter·数据分析
TechEdu2026069 天前
[人工智能]Python07:NumPy Selection:详细实践指南
人工智能·numpy