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,看看如何用它玩转表格数据 👋

相关推荐
第九序言T33 分钟前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
Java后端的Ai之路40 分钟前
CAS并发控制-从CPU指令到企业级乐观锁
vue.js·人工智能·python·cas·乐观锁
qq_4260039644 分钟前
UI自动化高频次登录login限流解决方案
python·ui·自动化
Sakura_j_h_1 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
钱工的门窗技术笔记1 小时前
室内极窄全景移门的支承路径与预留接口:轨道形式、型材壁厚口径与验收边界
物联网·架构·数据分析
龙亘川2 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人2 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
quantdash_cc2 小时前
如何验证历史行情的交易日期是否完整覆盖研究区间?
python·数据分析·pandas·量化交易·股票数据·quantdash
I Am a robert girl2 小时前
当智能体学会“串通”:从长程交互中读懂涌现式合谋
python·多智能体系统·多智能体协作·llm agent·涌现式合谋·对齐问题·激励机制设计
Raas1002 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品