Python数据分析:numpy数值计算基础

🐍 Python数据分析:用 NumPy 打好数据科学的地基

在 Python 数据分析的世界里,有一个库几乎无处不在------它就是 NumPy。无论你是想做机器学习、科学计算,还是简单的数据清洗与可视化,NumPy 都是你绕不开的第一块基石。

今天,我们就来系统梳理一下 NumPy 的核心功能,带你快速上手这个"数值计算神器"。


🔢 什么是 NumPy?

NumPy(Numerical Python)是一个开源的 Python 库,专为高效处理多维数组 而生。它的核心是 ndarray(N-dimensional array)对象------一种能存储同类型数据的多维容器。相比 Python 原生的列表(list),NumPy 数组在内存中连续存储、支持向量化运算,速度更快、语法更简洁。

❝

💡 小知识:NumPy 虽然诞生于 2005 年,但其思想可追溯到 1995 年的 Numeric 库。如今,它是 SciPy、Pandas、Matplotlib 等众多科学计算库的底层支柱。


🧱 创建数组:你的第一块"数据砖"

NumPy 提供了多种创建数组的方式:

  • 从列表/元组转换:

    复制代码
    import numpy as np
    arr = np.array([1, 3, 5, 7])  # 一维
    matrix = np.array([[1,2],[3,4]])  # 二维
  • 生成等差数列:

    复制代码
    np.arange(0, 10, 2)        # [0, 2, 4, 6, 8]
    np.linspace(0, 1, 5)       # [0. , 0.25, 0.5 , 0.75, 1. ]
  • 特殊数组:

    复制代码
    np.zeros((3, 3))   # 全0矩阵
    np.ones((2, 4))    # 全1矩阵
    np.eye(4)          # 单位矩阵
  • 随机数生成(常用于模拟和初始化):

    复制代码
    np.random.rand(3, 2)           # [0,1) 均匀分布
    np.random.randint(10, 20, size=(2,3))  # 指定范围整数

🔄 数组变形与组合:灵活操控数据结构

实际工作中,数据形状经常需要调整:

  • 重塑(reshape):

    复制代码
    arr = np.arange(12)
    arr.reshape(3, 4)   # 变成 3×4 矩阵
    # 也可以用 -1 自动推断:arr.reshape(-1, 4)
  • 合并:

    复制代码
    a = np.array([[1],[2]])
    b = np.array([[3],[4]])
    np.hstack((a, b))  # 横向拼接 → [[1,3], [2,4]]
    np.vstack((a, b))  # 纵向拼接 → [[1],[2],[3],[4]]
  • 分割:

    复制代码
    arr = np.arange(16).reshape(4,4)
    np.hsplit(arr, 2)  # 横向切两半
    np.vsplit(arr, 2)  # 纵向切两半
  • 转置:

    复制代码
    arr.T  # 最简洁的转置方式

🔍 索引与切片:精准定位数据

NumPy 的索引比 Python 列表更强大:

  • 基础切片(返回视图,不复制数据):

    复制代码
    arr = np.arange(10)
    arr[2:5]      # [2,3,4]
    arr[::-1]     # 反转
  • 多维索引:

    复制代码
    mat = np.arange(12).reshape(3,4)
    mat[0, 1:3]   # 第0行,第1~2列 → [1, 2]
    mat[:, 2]     # 所有行,第2列
  • 布尔索引 & 花式索引:

    复制代码
    mask = mat > 5
    mat[mask]     # 返回所有大于5的元素

➕ 向量化运算:告别 for 循环!

NumPy 最大的优势之一:无需显式循环即可对整个数组进行运算。

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

a + b        # [5, 7, 9]
a * 2        # [2, 4, 6]
a ** 2       # [1, 4, 9]

更厉害的是 广播机制(Broadcasting):即使两个数组形状不同,NumPy 也能智能地"扩展"它们以完成运算。

例如,一个 (3,4) 矩阵加上一个长度为 4 的向量,NumPy 会自动将向量加到每一行!


📊 统计与分析:从数据中提取洞察

NumPy 内置了丰富的统计函数:

复制代码
arr = np.random.rand(4, 5)

np.mean(arr)        # 整体均值
np.sum(arr, axis=0) # 每列求和
np.std(arr, axis=1) # 每行标准差
np.min(arr), np.max(arr)

还有实用工具:

  • np.sort():排序

  • np.unique():去重

  • np.where(condition, x, y):条件赋值(类似 Excel 的 IF)


💾 读写数据:保存你的成果

分析完的数据总要存下来:

  • 二进制格式(推荐,快且省空间):

    复制代码
    np.save('data.npy', arr)
    loaded = np.load('data.npy')
  • 文本/CSV 格式:

    复制代码
    np.savetxt('data.csv', arr, delimiter=',')
    loaded = np.loadtxt('data.csv', delimiter=',')

✅ 结语

NumPy 看似简单,却是数据科学大厦的钢筋水泥。掌握它,你不仅能写出更高效的代码,还能为后续学习 Pandas、Scikit-learn 打下坚实基础。

❝

🌟 小练习建议 :

尝试用 NumPy 完成以下任务:

  1. 创建一个 10×10 的矩阵,边界为 1,内部为 0;

  2. 生成 1000 个服从正态分布的随机数,并计算其均值与标准差;

  3. 对一个二维数组,找出每行的最大值及其位置。

动手,才是最好的学习方式。


如果你觉得这篇文章有帮助,欢迎点赞、转发,也欢迎在评论区分享你的 NumPy 使用技巧!下期我们将走进 Pandas,看看如何用它玩转表格数据 👋

相关推荐
larance3 分钟前
[菜鸟教程] 机器学习教程十课-Python 机器学习应用
人工智能·python·机器学习
栖凤4 分钟前
Java 的 try-catch 在 Agent 里失效了,我用了 5 个模式才兜住
java·前端·python
Aloudata6 分钟前
Metric Layer 建设指南:如何先从核心指标层启动企业语义工程
大数据·人工智能·数据分析·data agent·语义层
Yyyyyy~12 分钟前
【python】函数
python
外收内放15 分钟前
Python基础语法练习题(62原始版本及其优化版本)
开发语言·python
棉猴17 分钟前
玩游戏学Python4-字符串
python·游戏·字符串·pygame·玩游戏
马剑威(威哥爱编程)17 分钟前
【AI全栈后端12-12】Spring Boot 3.x 到 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·开发语言·spring boot·后端
三月微暖寻春笋27 分钟前
【和春笋一起学C++】(七十二)类模板
开发语言·c++·实例·类模板·使用类模板·数组模板
释厄62331 分钟前
智能体释放度子集律——文本 ⊂ 音频 ⊂ 视频⊂ 游戏
开发语言·游戏·microsoft·音视频
东来也_八门1 小时前
我用麦当劳开放的 MCP,把那个最冷门的营养接口做成了真实配餐求解器
python