Hello 大家好~今天带大家认识 Python 数据分析的 "瑞士军刀"——NumPy 库!即使是编程小白也能轻松看懂哦~全文包含超详细安装教程、基础用法解析,还有超实用的经典案例,手把手教你玩转 NumPy!😊​

一、NumPy 是什么?为什么要学它?​

NumPy(Numerical Python)是 Python 科学计算的核心库,主要用于处理多维数组对象和一系列数学函数。它就像是数据分析的 "地基",后续要学的 Pandas、Matplotlib 等神器都是基于它搭建的哦~​

🌟 核心优势:​

  • 比 Python 原生列表快 10-100 倍的运算速度(底层用 C 语言实现)​
  • 支持向量化操作(一行代码搞定批量运算)​
  • 内置丰富的数学函数(统计、线性代数、傅里叶变换等)​
  • 方便的广播机制(不同形状数组直接运算)

二、超详细安装教程(3 分钟搞定!)​

方法 1:用 pip 安装(推荐)​

打开命令行(Windows 用 cmd,Mac/Linux 用终端),输入:

pip install numpy

安装完成后,在 Python 中验证: 

import numpy as np  # 习惯缩写为np
print(np.__version__)  # 输出版本号,比如1.26.0就成功啦~

如果观众老爷们使用了Pycharm软件编写python代码,还有一种更加简单粗暴的方法安装numpy

import numpy as np#直接在py文件里编写import导入

#此时numpy字段会变红报错,此时鼠标点击numpy,然后键盘alt+enter就可以出现导包选项

方法 2:Anaconda 用户专属​

如果你安装了 Anaconda,直接在命令行输入:​

conda install numpy​

遇到问题怎么办?🤔​

  • 网络卡顿?试试加国内镜像:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy

三、NumPy 基础用法:从数组开始​

1. 创建数组(Ndarray 对象)​

NumPy 的核心是ndarray(多维数组),和 Python 列表的区别是:所有元素类型必须相同,且大小固定。​

创建方式一:从列表转换

arr = np.array([1, 2, 3, 4])  # 一维数组
print(arr)  # 输出:[1 2 3 4]

matrix = np.array([[1, 2], [3, 4]])  # 二维数组(矩阵)
print(matrix)
# 输出:
# [[1 2]
#  [3 4]]

创建方式二:生成特殊数组

zeros_arr = np.zeros((3, 4))  # 3行4列全0数组
ones_arr = np.ones((2, 2))     # 2行2列全1数组
empty_arr = np.empty((2, 3))   # 初始随机值数组(速度最快)
range_arr = np.arange(10)      # 生成0-9的数组,类似Python的range
linspace_arr = np.linspace(0, 10, 5)  # 0到10均匀分成5个数:[0. 2.5 5. 7.5 10.]

2. 数组属性:快速了解数据结构

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)   # 形状:(2, 3)(2行3列)
print(arr.dtype)   # 数据类型:int64(默认整数类型)
print(arr.size)    # 元素总数:6
print(arr.ndim)    # 维度:2(二维数组)

3. 数组索引与切片:和列表类似但更强大!

arr = np.array([1, 2, 3, 4, 5])
print(arr[2])       # 索引:输出3
print(arr[1:4])     # 切片:输出[2, 3, 4](左闭右开)

# 二维数组操作
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix[1, 2])        # 取第2行第3列元素:6
print(matrix[:, 1])        # 取所有行的第2列:[2, 5, 8]
print(matrix[1:, :2])      # 从第2行开始,取前2列:[[5,6]]

4. 数组运算:向量化操作超爽!​

不需要写循环!直接对整个数组进行运算~

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 加减乘除(对应元素运算)
print(a + b)  # [5 7 9]
print(a * b)  # [4 10 18]

# 矩阵乘法(用@符号或dot方法)
mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[5, 6], [7, 8]])
print(mat1 @ mat2)
# 输出:
# [[19 22]
#  [43 50]]

# 广播机制:不同形状数组运算
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr + 10)  # 每个元素加10:[[11 12 13],[14 15 16]]
print(arr * np.array([10, 20, 30]))  # 按列相乘:[[10,40,90],[40,100,180]]

矩阵乘法规则:

前提条件
两个矩阵 A(m×n 阶)和 B(p×q 阶)可以相乘,当且仅当 第一个矩阵的列数 n 等于 第二个矩阵的行数 p,即 n=p。结果矩阵 C 的阶数为 m×q。

关键特性

不满足交换律:一般情况下 AB≠BA。

满足结合律:(AB)C=A(BC)。

分配律:A(B+C)=AB+AC。

矩阵的乘法与行列式的乘法类似。

 此时AB和BA是完全不同的两个答案

四、NumPy 在数据分析中的核心作用​

1. 高性能数值计算​

  • 处理大规模数据时,避免 Python 循环的低效性​
  • 底层 C 语言实现,支持并行计算(虽然需要配合其他库)​

2. 数据预处理​

  • 快速填充缺失值(用 np.nan 表示缺失,配合掩码操作)​
  • 数据类型转换(astype 方法)​
  • 数组重组(reshape、flatten 等方法)​

3. 数学与统计分析​

内置大量统计函数:

arr = np.array([1, 2, 3, 4, 5, 5])
print(np.mean(arr))   # 均值:3.5
print(np.std(arr))    # 标准差:1.7078251276600336
print(np.max(arr))    # 最大值:5
print(np.min(arr))    # 最小值:1
print(np.unique(arr)) # 去重:[1 2 3 4 5]

五、经典案例实战(附完整代码)​

案例 1:学生成绩统计分析​

问题:计算全班 50 名学生 3 门课的平均分、最高分、最低分,以及每门课的标准差。

# 生成随机成绩(0-100分,50行3列)
scores = np.random.randint(0, 101, size=(50, 3))

# 计算每行平均分(每个学生的平均分)
student_avg = np.mean(scores, axis=1)  # axis=1表示按行计算
print("学生平均分前5名:", student_avg[:5])

# 计算每列统计量(每门课的统计)
subject_stats = np.array([
    np.mean(scores, axis=0),   # 平均分
    np.max(scores, axis=0),   # 最高分
    np.min(scores, axis=0),   # 最低分
    np.std(scores, axis=0)    # 标准差
])
print("\n每门课统计量(行:均值、最大值、最小值、标准差):")
print(subject_stats)

案例 2:蒙特卡洛模拟抛硬币​

问题:模拟抛 10000 次硬币,计算正面朝上的概率,观察是否接近 50%。

np.random.seed(42)  # 固定随机种子,结果可复现
coin_flips = np.random.choice([0, 1], size=10000)  # 0=反面,1=正面
head_probability = np.mean(coin_flips)
print(f"模拟抛硬币正面概率:{head_probability:.4f}")  # 输出接近0.5

六、总结与学习建议​

📝 今日重点回顾:​

  1. NumPy 是 Python 数据分析的基础,核心是 ndarray 数组​
  2. 安装简单,用pip install numpy即可​
  3. 数组创建、索引、运算和统计函数是基本功​
  4. 在高性能计算、数据预处理、数学分析中不可或缺​

🚀 学习建议:​

  1. 动手练习:每个知识点都自己敲一遍代码(案例代码直接复制到 IDE 运行)​
  2. 官方文档:英文好的同学直接看NumPy 官方文档,中文可看菜鸟教程​
  3. 后续学习:掌握 NumPy 后,接下来可以学 Pandas(处理表格数据)和 Matplotlib(数据可视化)​

💬 互动时间:​

你在学习 NumPy 时遇到过哪些问题?或者想了解哪个功能的深入用法?欢迎在评论区留言,我会逐一解答哦~下次我们将带来 Pandas 的入门教程,记得关注不迷路!​

希望这篇教程能帮你打开数据分析的大门~祝你学习顺利,代码无 bug!🎉

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐