如何通过Numpy核心库进行Python高效数据处理实战?

2026-06-10 21:511阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2094个文字,预计阅读时间需要9分钟。

如何通过Numpy核心库进行Python高效数据处理实战?

NumPy是Python科学计算的核心库。它提供了一系列高性能的多维数组对象和工具,用于这些数组的操作。数组的接口是NumPy最重要的特性,没有之一。本教程将练习使用NumPy。

NumPy 是 Python 科学计算中最常用的核心库。它可以提供一系列高性能的多维数组对象,以及用于这些数组的工具。这篇教程以练代教,通过实操掌握知识点的学习,确保大家能实际应用所学的编程知识。毕竟,Practice Makes Perfect。


为什么学习 Python 绕不开 Numpy?

把 NumPy 看起来可爱逗趣的名字拆开,人家其实非常正经。NumPy 即 Numerical Python(数字化 Python)的缩写。简单来说,NumPy 是 ​​Python​​ 中的线性代数库,这就明示了 NumPy 在 Python 中的重要性了。

之所以说 NumPy 是 Python 中最常用也是最重要的核心库,是因为许多类似 SciPy、Matplotlib、Scikit-learn、TensorFlow 等,都对 NumPy 有一定程度的依赖。例如,TensorFlow 会在内部使用 Numpy 来处理 Tensors 中的多项操作。 在处理数据科学或机器学习的过程中,NumPy 可以对数组提供数学和逻辑运算,同时也在 Python 中对 n 数组和矩阵操作提供各种不同的功能。 NumPy对于对数组进行数学和逻辑运算非常有用。它为Python中对n个数组和矩阵的操作提供了大量有用的功能。简单易用的 NumPy 可以简化复杂的数学实现,让编程概念变得更为数字化且易于理解,因此也广泛使用于各种开源项目中。


如何开始使用 NumPy?

在 ​​Python IDE​​ 中使用教程的​​配套源代码​​学习 NumPy,只需要通过 QuickFix 就可以一键安装。更多关于 NumPy 模块的安装方式,可以查看如何​​手动下载和安装依赖​​。

如何通过Numpy核心库进行Python高效数据处理实战?

​​d1590a0dfb-share.lightly.teamcode.com​​


NumPy 跟练 1:修改学科成绩曲线

前面曾提到数组是 NumPy 最核心的功能,也是最重要的特性。因此,第一阶段的跟练内容就是使用 ​​numpy.array()​​ 创建数组,然后通过 NumPy 内建的函数修改并计算数组中的内容。


场景说明

假设你是一名大学教师,你在最近的期末考中失手出了巨难的考题,因此学生的成绩都不太理想。虽然如此,你很善良,不忍心大量学生因此挂科,所以你决定修改学科成绩曲线,让大家的分数看起来合理一些。

你初次批改的卷面分分别为:​​[42, 35, 64, 85, 51, 72, 59, 12]​​ 这么一看,8 个人就有 5 个挂,着实有点狠了。


解题

我们把这个分数用 ​​numpy.array()​​ 导入,即​​numpy.array([42, 35, 64, 85, 51, 72, 59, 12])​​。若使用 ​​import numpy as np​​,则应在代码中把 ​​numpy.array()​​ 改为 ​​np.array()​​。

NumPy 中的数组会将数据元素储存于毗邻的储存位置中,通过索引号直接访问。这里的数组为一维数组,随着深入学习,我们慢慢还会接触二维数组 …… N 维数组等等。

​​d1590a0dfb-share.lightly.teamcode.com​​

如果不使用 NumPy 处理成绩曲线,我们需要重复为各个分数进行加分后,再进行合计。NumPy 把这些数据组合成数组后,便可以对这些数据进行统一处理,不仅去相对掉繁琐的 ​​for​​ 循环,让代码看起来更简洁明了,更减少了代码出现 bug 的概率。一般上,这个过程被称之为矢量化(vectorization)。

在这段代码中,我们主要应用了 NumPy 中自建的 ​​.mean()​​ 函数以及 ​​.clip()​​ 函数。前者即平均数(mean)的函数,简单易懂。​​.clip()​​ 函数则确保数组中的值不超过给定的上下限,clip 的意思是“修剪”,所以应用到代码中为:

​​numpy.clip(需要修剪的变量, 下限, 上限)​​

在修改分数曲线时,我们需要修剪的变量为 ​​new_grades​​,下限设置为不低于原先的分数(否则还被降分的学生也太惨了),然后把上限设置为 100 分。毕竟,百分制的话 100 分就是上限了。如此一来,直接使用老传统 ​​print()​​ 进行打印,新的分数就出来了。

刚开始使用 NumPy 其实不太需要担心各种各样的函数眼花缭乱,也不需要担心自己需要死背这些内容,拥抱各类模块的文档(documentation)就可以快速理解模块中的各种函数功能。所以,这类的文档有时候也被称之为小抄(cheatsheet)或食谱(cookbook)。也就是说,合格的程序员必须要学会查找和阅读 ​​NumPy 的官方文档​​。


NumPy 跟练 2:检索学生班级与成绩

上一个跟练的内容为一维数组,这次我们来看看 NumPy 如何处理多维数组中的数据。


场景说明

因为批改大学的试卷太难了,你选择退而求其次,考了教师资格证成为高中体育老师。这一次,我们要用 NumPy 分别记录学生的姓名、班级和成绩。

在这次的场景中,我们将应用 NumPy 中的记录数组(又称之为结构化数组)。这类数组可以为每一列指定数据类别(例如:str 字符串、int 整数、bool 布尔运算等)和名称,让数据筛选变得更简单强大。 我们来看看数据原材料:

data=np.array([
("丁一",1,87),
("刘二",2,68),
("张三",3,72),
("李四",3,55),
("王五",3,93),
("赵六",2,81),
("孙七",1,75),
("周八",1,88),
("吴九",2,64),
("郑十",2,49),
],dtype=[("姓名",str),("班级",int),("分数",int)])

这一看除了把名字排得特别整齐,其他班级和分数不是乱七八糟嘛 …… 这不我们还得把学生按班级整理好,高分的同学该表扬,低分的同学该批评一下嘛?


练习

上一个跟练我们直接给了标准答案,这一次还是需要大家自己动手尝试。放心,该有的提示和讲解还是会有,但检查答案前还是需要大家思考一下以下的题目:

#已知
data[0]的输出为("丁一",1,87)
data["姓名"]的输出为['丁一''刘二''张三'...]
data[data["分数"]>59]["姓名"]的输出为['丁一''刘二''张三''王五''赵六''孙七''周八''吴九']

使用 ​​data[]​​ 函数,求:

  • 低于及格分数的学生姓名。
  • 分数最高的学生姓名、班级及分数。
  • 各班级的学生姓名、班级及分数,需按分数大小逆序排列。
  • 同学们可以另开新档尝试自己手动做题,再查看源代码中的 ​​score2D.py​​ 参考答案,​​在线查看并运行项目​​:​​d1590a0dfb-share.lightly.teamcode.com​​

    最后的最后,无论是学习编程或其他内容,只有练习、练习再练习才能在知识基础上更进一步。欢迎查看源码中的扩展练习与答案以及往期 Python 教程: ​​怎么看待 Python(PyScript) 可以做浏览器前端开发语言?​​

    ​​使用 Python Turtle 制作贪吃蛇游戏​​

    ​​学习 Python 爬虫,手把手通过 Python 入门爬取网页信息​​

    本文共计2094个文字,预计阅读时间需要9分钟。

    如何通过Numpy核心库进行Python高效数据处理实战?

    NumPy是Python科学计算的核心库。它提供了一系列高性能的多维数组对象和工具,用于这些数组的操作。数组的接口是NumPy最重要的特性,没有之一。本教程将练习使用NumPy。

    NumPy 是 Python 科学计算中最常用的核心库。它可以提供一系列高性能的多维数组对象,以及用于这些数组的工具。这篇教程以练代教,通过实操掌握知识点的学习,确保大家能实际应用所学的编程知识。毕竟,Practice Makes Perfect。


    为什么学习 Python 绕不开 Numpy?

    把 NumPy 看起来可爱逗趣的名字拆开,人家其实非常正经。NumPy 即 Numerical Python(数字化 Python)的缩写。简单来说,NumPy 是 ​​Python​​ 中的线性代数库,这就明示了 NumPy 在 Python 中的重要性了。

    之所以说 NumPy 是 Python 中最常用也是最重要的核心库,是因为许多类似 SciPy、Matplotlib、Scikit-learn、TensorFlow 等,都对 NumPy 有一定程度的依赖。例如,TensorFlow 会在内部使用 Numpy 来处理 Tensors 中的多项操作。 在处理数据科学或机器学习的过程中,NumPy 可以对数组提供数学和逻辑运算,同时也在 Python 中对 n 数组和矩阵操作提供各种不同的功能。 NumPy对于对数组进行数学和逻辑运算非常有用。它为Python中对n个数组和矩阵的操作提供了大量有用的功能。简单易用的 NumPy 可以简化复杂的数学实现,让编程概念变得更为数字化且易于理解,因此也广泛使用于各种开源项目中。


    如何开始使用 NumPy?

    在 ​​Python IDE​​ 中使用教程的​​配套源代码​​学习 NumPy,只需要通过 QuickFix 就可以一键安装。更多关于 NumPy 模块的安装方式,可以查看如何​​手动下载和安装依赖​​。

    如何通过Numpy核心库进行Python高效数据处理实战?

    ​​d1590a0dfb-share.lightly.teamcode.com​​


    NumPy 跟练 1:修改学科成绩曲线

    前面曾提到数组是 NumPy 最核心的功能,也是最重要的特性。因此,第一阶段的跟练内容就是使用 ​​numpy.array()​​ 创建数组,然后通过 NumPy 内建的函数修改并计算数组中的内容。


    场景说明

    假设你是一名大学教师,你在最近的期末考中失手出了巨难的考题,因此学生的成绩都不太理想。虽然如此,你很善良,不忍心大量学生因此挂科,所以你决定修改学科成绩曲线,让大家的分数看起来合理一些。

    你初次批改的卷面分分别为:​​[42, 35, 64, 85, 51, 72, 59, 12]​​ 这么一看,8 个人就有 5 个挂,着实有点狠了。


    解题

    我们把这个分数用 ​​numpy.array()​​ 导入,即​​numpy.array([42, 35, 64, 85, 51, 72, 59, 12])​​。若使用 ​​import numpy as np​​,则应在代码中把 ​​numpy.array()​​ 改为 ​​np.array()​​。

    NumPy 中的数组会将数据元素储存于毗邻的储存位置中,通过索引号直接访问。这里的数组为一维数组,随着深入学习,我们慢慢还会接触二维数组 …… N 维数组等等。

    ​​d1590a0dfb-share.lightly.teamcode.com​​

    如果不使用 NumPy 处理成绩曲线,我们需要重复为各个分数进行加分后,再进行合计。NumPy 把这些数据组合成数组后,便可以对这些数据进行统一处理,不仅去相对掉繁琐的 ​​for​​ 循环,让代码看起来更简洁明了,更减少了代码出现 bug 的概率。一般上,这个过程被称之为矢量化(vectorization)。

    在这段代码中,我们主要应用了 NumPy 中自建的 ​​.mean()​​ 函数以及 ​​.clip()​​ 函数。前者即平均数(mean)的函数,简单易懂。​​.clip()​​ 函数则确保数组中的值不超过给定的上下限,clip 的意思是“修剪”,所以应用到代码中为:

    ​​numpy.clip(需要修剪的变量, 下限, 上限)​​

    在修改分数曲线时,我们需要修剪的变量为 ​​new_grades​​,下限设置为不低于原先的分数(否则还被降分的学生也太惨了),然后把上限设置为 100 分。毕竟,百分制的话 100 分就是上限了。如此一来,直接使用老传统 ​​print()​​ 进行打印,新的分数就出来了。

    刚开始使用 NumPy 其实不太需要担心各种各样的函数眼花缭乱,也不需要担心自己需要死背这些内容,拥抱各类模块的文档(documentation)就可以快速理解模块中的各种函数功能。所以,这类的文档有时候也被称之为小抄(cheatsheet)或食谱(cookbook)。也就是说,合格的程序员必须要学会查找和阅读 ​​NumPy 的官方文档​​。


    NumPy 跟练 2:检索学生班级与成绩

    上一个跟练的内容为一维数组,这次我们来看看 NumPy 如何处理多维数组中的数据。


    场景说明

    因为批改大学的试卷太难了,你选择退而求其次,考了教师资格证成为高中体育老师。这一次,我们要用 NumPy 分别记录学生的姓名、班级和成绩。

    在这次的场景中,我们将应用 NumPy 中的记录数组(又称之为结构化数组)。这类数组可以为每一列指定数据类别(例如:str 字符串、int 整数、bool 布尔运算等)和名称,让数据筛选变得更简单强大。 我们来看看数据原材料:

    data=np.array([
    ("丁一",1,87),
    ("刘二",2,68),
    ("张三",3,72),
    ("李四",3,55),
    ("王五",3,93),
    ("赵六",2,81),
    ("孙七",1,75),
    ("周八",1,88),
    ("吴九",2,64),
    ("郑十",2,49),
    ],dtype=[("姓名",str),("班级",int),("分数",int)])

    这一看除了把名字排得特别整齐,其他班级和分数不是乱七八糟嘛 …… 这不我们还得把学生按班级整理好,高分的同学该表扬,低分的同学该批评一下嘛?


    练习

    上一个跟练我们直接给了标准答案,这一次还是需要大家自己动手尝试。放心,该有的提示和讲解还是会有,但检查答案前还是需要大家思考一下以下的题目:

    #已知
    data[0]的输出为("丁一",1,87)
    data["姓名"]的输出为['丁一''刘二''张三'...]
    data[data["分数"]>59]["姓名"]的输出为['丁一''刘二''张三''王五''赵六''孙七''周八''吴九']

    使用 ​​data[]​​ 函数,求:

  • 低于及格分数的学生姓名。
  • 分数最高的学生姓名、班级及分数。
  • 各班级的学生姓名、班级及分数,需按分数大小逆序排列。
  • 同学们可以另开新档尝试自己手动做题,再查看源代码中的 ​​score2D.py​​ 参考答案,​​在线查看并运行项目​​:​​d1590a0dfb-share.lightly.teamcode.com​​

    最后的最后,无论是学习编程或其他内容,只有练习、练习再练习才能在知识基础上更进一步。欢迎查看源码中的扩展练习与答案以及往期 Python 教程: ​​怎么看待 Python(PyScript) 可以做浏览器前端开发语言?​​

    ​​使用 Python Turtle 制作贪吃蛇游戏​​

    ​​学习 Python 爬虫,手把手通过 Python 入门爬取网页信息​​