当前位置: 首页 > news >正文

NumPy 2.x 完全指南【一】简介

文章目录

  • 1. 概述
  • 2. 发展历史
  • 3. 生态系统
    • 3.1 科学领域
    • 3.2 数组库
    • 3.3 数据科学
    • 3.4 机器学习
    • 3.5 可视化
  • 4. 应用案例
    • 4.1 黑洞的第一张图像
    • 4.2 引力波的检测
    • 4.3 体育分析
    • 4.4 姿态分析
  • 5. 开发语言
  • 6. 开源协议
  • 7. Travis Oliphant

1. 概述

Alt
NumPyNumerical Python 的缩写,是一个用于在 Python 中进行科学计算的基础库,一般读作【兰派】。提供了一个多维数组对象,以及多种数组操作函数,包括数学运算、逻辑运算、形状操作、排序、选择、输入/输出、离散傅里叶变换、基础线性代数、基础统计运算、随机模拟等。

重要特性

  • 数值计算工具:提供了全面的数学函数、随机数生成器、线性代数例程、傅里叶变换等功能。

  • 强大的 N 维数组:快速且多功能,NumPy 的向量化、索引和广播概念已成为数组计算的事实标准。

  • 互操作性:支持广泛的硬件和计算平台,并与分布式、GPU 和稀疏数组库兼容。

  • 高效性能:其核心是经过高度优化的 C 代码,享受 Python 的灵活性,同时获得编译代码的速度。

  • 易于使用:高级语法使其对于任何背景或经验水平的程序员都易于使用并富有生产力。

  • 开源:在宽松的 BSD 许可证下发布,由一个充满活力、响应迅速且多样化的社区在 GitHub 上开发和维护。

NumPy 官网资料地址:

  • 官网网站
  • 官网文档
  • 邮件列表
  • 源代码
  • 贡献指南
  • 错误报告
  • 安全漏洞报告

NumPy 作为一个高效的多维数组科学计算库,广泛应用于人工智能(AI)的各个领域中,提供了基础数据结构、高效计算等能力,几乎贯穿了数据处理、模型训练、算法实现和结果分析的等各个环节,是我们在入门 AI 时必须学习和掌握的一个基础库。

2. 发展历史

1991 年,Python 的第一个版本(0.9.0)正式发布,凭借简单、易读等特点,在教育和科学计算领域开始逐渐流行起来。

1995 年,Jim Hugunin 开始着手开发一个针对数值计算的 Python 库,名字叫 Numeric ,提供一个高效的、多维的数组对象,专门用于处理数值数据,并支持一些基础的数学运算,Numeric 也成为了 NumPy 的前身。

1999 年,Travis Oliphant 和其他几位开发者在 Multipack 库的基础上,开始构建一个面向科学计算和工程领域的工具包,并命名为 SciPy。旨在提供一个与 MATLAB 相似的工具集,提供丰富的数学算法和专门的科学计算功能,使用 Numeric 作为底层的数组处理库。

20018 月,SciPy 1.0 版本正式发布。

由于当时的 Numeric 库在处理更大规模的数值数据时存在性能瓶颈,还不能完全满足一些高性能计算需求,而且大佬们希望 Numeric 可以进入 Python 标准库。于是,另一组开发者开始了一个新的项目,名为 NumArray,目标是弥补 Numeric 在处理大型数组时的不足,并优化内存管理和计算性能,并大幅改善了代码质量。

但是由于 NumArray 对于小型矩阵的操作较慢,并且其 API 的易用性并没有 Numeric 好,所以 SciPy 在迁移到 NumArray 时遇到了很大的困难。这也导致社区出现了分化问题,一部分人认为 NumArrayNumeric 的下一个版本,所以只开发 NumArray ,而另外一部分认为 SciPy 还是用的 Numeric ,所以只开发 Numeric

2005 年,在 Travis Oliphant 的主导下,社区决定将 NumArrayNumeric 进行合并,以便发挥各自的优点,并在此基础上推出一个独立的新库,命名为 NumPyNumerical Python)。

2006 年,NumPy 1.0 版本正式发布,并迅速成为 Python 生态系统中数据分析、机器学习、科学计算领域的最重要的基础库之一。

2011 年,NumPy 1.5.0 版本引入了对 Python 3 的支持。

20246 月,Numpy 2.0.0 版本正式发布,废弃了部分不常用的接口。

目前最新的版本为 2025-1-18 发布的 2.2.2 ,需要注意的是,目前其他 Python 库可能大多都还是使用的 1.25.x1.26.x 版本,需要注意它们的版本要求,尽量避免兼容性问题。
在这里插入图片描述

3. 生态系统

NumPy 的基础上发展出了一些列的扩展库、工具和应用框架,覆盖了从基础数学运算到高级机器学习、可视化的广泛领域。

🔍 接下来,我们看下官网中关于生态系统和应用案例的相关介绍。

3.1 科学领域

在科学领域中,几乎所有使用 Python 的科学家都依赖 NumPy 的强大功能,在量子计算、统计计算、天文学、数学分析、建筑与工程等等领域中的 Python 库,都用到了 NumPy
在这里插入图片描述

3.2 数组库

在很多深度学习框架、数组库、机器学习平台中也用到了 NumPy
在这里插入图片描述

3.3 数据科学

NumPy 位于数据科学库丰富生态系统的核心。一个典型的探索性数据科学工作流可能如下所示:

  • 数据提取、转换和加载(ETL):PandasIntakePyJanitor
  • 探索性分析:JupyterSeabornMatplotlibAltair
  • 建模与评估:scikit-learnstatsmodelsPyMC3spaCy
  • 仪表盘报告:DashPanelVoila

在这里插入图片描述

对于大规模数据,DaskRay 旨在实现扩展。稳定的部署依赖于数据版本控制(DVC)、实验跟踪(MLFlow)和工作流自动化(AirflowDagsterPrefect)。
在这里插入图片描述

3.4 机器学习

scikit-learnSciPy 等强大机器学习库都使用 NumPy 作为基础,随着机器学习的发展,基于 NumPy 构建的库也在不断增多,比如 TensorFlowPyTorch ,它们在语音和图像识别、基于文本的应用、时间序列分析、视频检测、计算机视觉、自然语言处理等领域中非常流行。

集成方法(如分箱、袋装、堆叠、提升)是一类通过结合多个模型来提高预测性能的技术,其中 XGBoostLightGBMCatBoost 等基于提升方法的高效机器学习工具。可视化机器学习模型性能的工具库 Yellowbrick ,模型解释的工具库 Eli5 等,也都集成了 NumPy

3.5 可视化

NumPyPython 可视化生态系统中一个重要的组成部分,该生态系统包括 MatplotlibSeabornPlotlyAltairBokehHolovizVispyNapariPyVista 等库。NumPy 加速了大规模数组的处理,使研究人员能够可视化远大于原生 Python 所能处理的数据集。
在这里插入图片描述

4. 应用案例

4.1 黑洞的第一张图像

黑洞是一个橙色圆圈,背景是黑色的,NumPy 与依赖于 NumPySciPyMatplotlib 等库一起,使得事件视界望远镜能够拍摄到黑洞的首张图像。
在这里插入图片描述

4.2 引力波的检测

两个球体彼此绕行,它们在周围引起重力的变化。1916 年阿尔伯特·爱因斯坦预言了引力波,100 年后 LIGO 科学家使用 NumPy 确认了引力波的存在。
在这里插入图片描述

4.3 体育分析

绿色场地上的板球。板球分析通过统计建模和预测分析改善球员和团队的表现,正在改变比赛,NumPy 支持了这些分析的许多部分。
在这里插入图片描述

4.4 姿态分析

DeepLabCut 使用 NumPy 加速科学研究,涉及观察动物行为,以便更好地理解跨物种和时间尺度的运动控制。
在这里插入图片描述

5. 开发语言

NumPy 的开发语言主要包括:

  • Python:基于 Python 提供高层且易用的 API 来处理数组和矩阵等数据结构。
  • C:使用 C 语言实现底层,提供高效的计算性能。

在这里插入图片描述

6. 开源协议

NumPy 使用 BSD 3-Clause License 开源许可协议,是一种比较宽松的灵活、宽松的许可证,使开发者能够自由地使用、修改和分发代码,同时保护原作者免于因使用该代码引发的法律责任。

LICENSE 文件:

Copyright (c) 2005-2024, NumPy Developers.
All rights reserved.Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:* Redistributions of source code must retain the above copyrightnotice, this list of conditions and the following disclaimer.* Redistributions in binary form must reproduce the abovecopyright notice, this list of conditions and the followingdisclaimer in the documentation and/or other materials providedwith the distribution.* Neither the name of the NumPy Developers nor the names of anycontributors may be used to endorse or promote products derivedfrom this software without specific prior written permission.THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

7. Travis Oliphant

Travis Oliphant(特拉维斯·奥利芬特)于 1969412 日出生于美国的俄勒冈州,拥有梅奥诊所的博士学位及杨百翰大学的数学与电气工程学士和硕士学位。

在科学计算和数据分析领域做出了很多广为人知的贡献,是 NumPySciPy 库的主要创始人之一,同时也是科学计算平台 Anaconda 的创始人。
在这里插入图片描述
大佬还出版过一本《Guide to NumPy》:
在这里插入图片描述

http://www.xdnf.cn/news/329491.html

相关文章:

  • 混淆矩阵(Confusion Matrix)
  • Qt开发经验 --- 避坑指南(5)
  • python打卡day18
  • Spring MVC中跨域问题处理
  • 把一个过大的文件夹分成若干个 ZIP 分卷
  • 雅努斯问题(Janus Problem)及解决方案
  • 三轴云台之模糊控制算法篇
  • Golang的linux运行环境的安装与配置
  • AB测试面试题
  • MCP学习
  • 行动作用作用
  • 后端返回文件流,前端展示图片
  • 003 系统和入门指令
  • 【基础知识】常见公式计算(三)
  • 情感共鸣+海外网红营销:跨境电商如何讲好“母亲节”故事?
  • BRAM 64bit位宽报错问题
  • C++ 如何在一个方法中返回多个不同类型的数据
  • [D1,2] 贪心刷题
  • 深入剖析GoFrame日志模块:优势、特色与项目实践经验分享
  • 不同大模型对提示词和问题的符号标识
  • C++:买房子
  • 手动写一个vuex的可持续化插件
  • MySQL的行级锁锁的到底是什么?
  • [Windows] Ghost Downloader v3.5.9 开源多线程下载工具
  • Qt开发经验:回调函数的线程归属问题及回调函数中更新控件的问题
  • css识别\n换行
  • SEO关键词与长尾词精准布局策略
  • 海外短剧H5系统开发:技术架构、SEO优化与全球市场突围策略 [2025版]
  • 通过vllm部署qwen3大模型以及基于 vLLM 的 OpenAI 兼容 API 接口调用方法总结
  • Yocto Project概念(一)