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

相关推荐
Cx330❀3 小时前
【优选算法必刷100题】第038题(位运算):消失的两个数字
开发语言·c++·算法·leetcode·面试
Loo国昌3 小时前
深入理解 FastAPI:Python高性能API框架的完整指南
开发语言·人工智能·后端·python·langchain·fastapi
chinesegf3 小时前
Ubuntu 安装 Python 虚拟环境:常见问题与解决指南
linux·python·ubuntu
醉舞经阁半卷书13 小时前
Python机器学习常用库快速精通
人工智能·python·深度学习·机器学习·数据挖掘·数据分析·scikit-learn
hoiii1873 小时前
16APSK/32APSK调制解调MATLAB仿真实现
开发语言·matlab·fpga开发
老徐电商数据笔记3 小时前
BI工具与数据分析平台:数据价值呈现的最后一公里
数据库·数据挖掘·数据分析·bi·bi选型思考
feifeigo1234 小时前
基于MATLAB的情感语音模板培训与识别实现方案
开发语言·matlab
JH30734 小时前
Java Spring中@AllArgsConstructor注解引发的依赖注入异常解决
java·开发语言·spring
码农水水4 小时前
米哈游Java面试被问:机器学习模型的在线服务和A/B测试
java·开发语言·数据库·spring boot·后端·机器学习·word