0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python编程语言开源库NUMPY的工作原理及优势

NVIDIA英伟达 来源:NVIDIA英伟达 作者:NVIDIA英伟达 2022-07-15 09:35 次阅读

NumPy 是一个免费的开源 Python 库,用于 n 维数组(也称为张量)处理和数值计算。

什么是 NUMPY?

NumPy 是一个免费的 Python 编程语言开源库,它功能强大、已经过充分优化,并增加了对大型多维数组(也称为矩阵或张量)的支持。NumPy 还提供了一系列高级数学函数,可与这些数组结合使用。其中包括基本的线性代数、随机模拟、傅立叶变换、三角运算和统计运算。

NumPy 代表 “numerical Python”,基于早期的 Numeric 和 Numarray 库构建而成,旨在为 Python 提供快速的数字计算。如今,NumPy 贡献者众多,并得到了 NumFOCUS 的赞助。

作为科学计算的核心库,NumPy 是 Pandas、Scikit-learn和SciPy等库的基础。它广泛应用于在大型数组上执行优化的数学运算。

选择 NUMPY 的原因及其工作原理

多维数组是 NumPy 库的中心数据结构,通常代表值的网格。NumPy 的 ndarray 是一个同构的 n 维数组对象,描述了类似类型的元素或项的集合。在这些ndarrays中,每个项都包含大小相同的内存块,且每个内存块都采用同一识别方式。这能够高效、快速、轻松地处理科学计算的数据。

29357f4a-0377-11ed-ba43-dac502259ad0.png

NumPy 数组运算速度比 Python Lists 要快,因为 NumPy 数组是类似数据类型的编译,并且在内存中密集打包。相比之下,Python Lists 可以具有不同的数据类型,在系统执行计算时会增加对这些数据类型的限制。

| NumPy 的优势

NumPy 具有以下重要优势和特性:

NumPy 的 ndarray 计算概念是 Python 和 PyData 科学生态系统的核心。

NumPy 为高度优化的 C 函数提供了 Python 前端,可提供简单的 Python 接口,并实现编译代码的速度。

NumPy 强大的 N 维数组对象可与各种库集成。

与使用 Python 的内置列表相比,NumPy 数组可以更高效地使用大型数据集来执行高级数学运算,且使用的代码更少。对于大小和速度至关重要的科学计算序列而言,这一点至关重要。

NUMPY 的重要意义

NumPy 让数据科学家更易于使用 Python 并提供了 C 级优化,有助于快速创建高效代码,进行探索数据分析和模型构建。如今,要想在科学计算领域取得成功,对算法进行快速原型设计必不可少,而这二者的实现对此至关重要。因此,可以使用 NumPy 在 Python 中实现多维数据通信

利用 PYTHON 进行 GPU 加速计

在架构方面,CPU 仅由几个具有大缓存内存的核心组成,一次只可以处理几个软件线程。相比之下,GPU 由数百个核心组成,可以同时处理数千个线程。

29410afe-0377-11ed-ba43-dac502259ad0.png

NumPy 已成为在 Python 中实现多维数据通信的实际方法。然而,对于多核 GPU,这种实施并非最佳。因此,对于较新的针对 GPU 优化的库实施 Numpy 数组或与 Numpy 数组进行互操作。

NVIDIACUDA是 NVIDIA 专为 GPU 通用计算开发的并行计算平台和编程模型。CUDA 数组接口是描述 GPU 数组(张量)的标准格式,允许在不同的库之间共享 GPU 数组,而无需复制或转换数据。CUDA 数组由 Numba、CuPy、MXNet 和 PyTorch 提供支持。

CuPy是一个利用 GPU 库在 NVIDIA GPU 上实施 NumPy CUDA 数组的库。

Numba是一个 Python 编译器,可以编译 Python 代码,以在支持 CUDA 的 GPU 上执行。Numba 直接支持 NumPy 数组。

Apache MXNet是一个灵活高效的深度学习库。可以使用它的 NDArray 将模型的输入和输出表示和操作为多维数组。NDArray 类似于 NumPy 的 ndarray,但它们可以在 GPU 上运行,以加速计算。

PyTorch是一种开源深度学习框架,以出色的灵活性和易用性著称。Pytorch Tensors 与 NumPy 的 ndarray 类似,但它们可以在 GPU 上运行,加速计算。

NVIDIA GPU 加速的端到端数据科学

基于CUDA-X AI创建的 NVIDIARAPIDS开源软件库套件使您完全能够在 GPU 上执行端到端数据科学和分析流程。此套件依靠 NVIDIA CUDA 基元进行低级别计算优化,但通过用户友好型 Python 接口实现了 GPU 并行化和高带宽显存速度。

借助 RAPIDS GPU DataFrame,数据可以通过一个类似 Pandas 的接口加载到 GPU 上,然后用于各种连接的机器学习和图形分析算法,而无需离开 GPU。这种级别的互操作性是通过 Apache Arrow 这样的库实现的。仅需一行代码,即可从 NumPy 数组、Pandas DataFrame 和 PyArrow 表格创建 GPU 数据框。其他项目可以使用数组接口交换 CUDA 数据。这可加速端到端流程(从数据准备到机器学习,再到深度学习)。

29515134-0377-11ed-ba43-dac502259ad0.png

RAPIDS 支持在许多热门数据科学库之间共享设备内存。这样可将数据保留在 GPU 上,并省去了来回复制主机内存的高昂成本。

29756a24-0377-11ed-ba43-dac502259ad0.png

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4585

    浏览量

    101691
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4413

    浏览量

    126640
  • 开源
    +关注

    关注

    3

    文章

    2985

    浏览量

    41714
  • python
    +关注

    关注

    51

    文章

    4671

    浏览量

    83457
收藏 人收藏

    评论

    相关推荐

    什么是NumPy?选择NUMPY的原因及其工作原理是什么

    NumPy 是一个免费的 Python 编程语言开源库,它功能强大、已经过充分优化,并增加了对大型多维数组(也称为矩阵或张量)的支持。
    的头像 发表于 07-15 09:37 2712次阅读

    python 学习:在内网中 python-numpy 安装方法,升级pip3版本的指令

    指令格式如下:先下载numpy到C盘具体位置 手动安装指令如下: pip install c:\\\\users\\\\sesa738142
    发表于 04-22 17:18

    Python编程语言可以应用在哪些方面?

    有名气的Python web框架为Django。从事该领域应从数据、组件、安全等多领域进行学习,从底层了解其工作原理并可驾驭任何业内主流的Web框架。2. 网络编程网络编程
    发表于 02-05 17:50

    python有哪些方向?

    web框架,目前比较有名气的Python web框架为Django。从事该领域应从数据、组件、安全等多领域进行学习,从底层了解其工作原理并可驾驭任何业内主流的Web框架。2. 网络编程网络编程
    发表于 03-09 15:47

    Python机器学习常用

    Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的,再加上其简单、易学、速度快、开源免费、可移植性、可扩展性以及面向对象的特点,
    发表于 03-26 16:29

    python和别的语言比所具备的优势

    2017年最受欢迎的编程语言之一,在2017年,TIOBE编程语言中排名第四,成为IT转行、择业首选编程
    发表于 04-13 14:57

    不得不知的6大Python编程优势

    Python 是一门更注重可读性和效率的语言,尤其是相较于 Java,PHP 以及 C++ 这样的语言,它的这两个优势让其在开发者中大受欢迎,除此之外,
    发表于 06-28 15:20

    Python十大应用领域和就业方向

    有名气的Python web框架为Django。从事该领域应从数据、组件、安全等多领域进行学习,从底层了解其工作原理并可驾驭任何业内主流的Web框架。2. 网络编程网络编程
    发表于 11-21 14:54

    Python与其他编程语言有何不同?

    迁移到使用Python编程语言构建的扩展模块。  其他编程语言不像Python那样拥有丰富的支持
    发表于 09-16 15:54

    PythonNumPy扩展包简介及案例详解

    NumPyPython语言的一个扩展包。支持多维数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy提供了与Matlab相似的功能与操作方式,因为两者皆为直译
    发表于 11-15 12:31 1863次阅读

    基于pythonnumpy深度解析

    numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速、节省空间。numpy支持高级大量的维度数组与矩阵运算,此外
    的头像 发表于 01-24 13:55 4994次阅读
    基于<b class='flag-5'>python</b>的<b class='flag-5'>numpy</b>深度解析

    数据分析必备的NumPy技巧(Python

    NumPy系统是Python的一种开源的数值计算扩展,它也是是Python数据分析必不可少的第三方库。本文中的NumPy真题旨在提供一个参考
    的头像 发表于 03-05 15:41 5436次阅读

    IEEE发布顶级编程语言排行榜:Python雄踞榜首

    IEEE Spectrum发布了最新的第五届年度编程语言交互排行榜!Python不但雄踞第一,在综合指数、用户增速、就业优势开源语言单项中
    的头像 发表于 08-02 09:32 3844次阅读

    详解Python中的Pandas和Numpy

    pandas、numpyPython数据科学中非常常用的库,numpyPython的数值计算扩展,专门用来处理矩阵,它的运算效率比列表更高效。
    的头像 发表于 05-25 12:49 1963次阅读

    Python编程语言属于什么语言

    、易于学习和理解的语言,强调代码的可读性和简洁性。Python的设计真正做到了"坚守一种方法",非常注重代码的正确性和一致性。这也是为什么Python非常受欢迎的主要原因之一。接下来,我将详细介绍
    的头像 发表于 11-22 14:31 635次阅读