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

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

3天内不再提示

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

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

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

什么是 NUMPY?

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

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

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

选择 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











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

    关注

    27

    文章

    4403

    浏览量

    126564
  • 数据通信
    +关注

    关注

    2

    文章

    392

    浏览量

    33511
  • python
    +关注

    关注

    51

    文章

    4667

    浏览量

    83441

原文标题:NVIDIA 大讲堂 | 什么是 NUMPY?

文章出处:【微信号:NVIDIA_China,微信公众号:NVIDIA英伟达】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux的numpy安装步骤

    今天想使用pyspark的交互模式下执行from pyspark.mllib.regression import LabeledPoint时,报了下面这个错误,错误提示没有安装numpy
    发表于 07-24 06:47

    利用Numba编写快速NumPy函数

    《利用Python进行数据分析》 附录 A7 使用Numba编写快速NumPy函数
    发表于 04-07 06:31

    Numpy的学习总结

    Numpy学习笔记
    发表于 07-16 08:27

    基于NumPy的pandas工具

    :pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport
    发表于 08-16 08:47

    SoC中如何使用OpenCV?导入cv2程序提示找不到numpynumpy导入失败是怎么回事?

    SoC中如何使用OpenCV?导入cv2,程序提示找不到numpynumpy导入失败?
    发表于 09-19 08:00

    Python中NumPy扩展包简介及案例详解

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

    灵活运用Python中numpy库的矩阵运算

    Python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包。 1.numpy的导入和使用 from numpy import *;#导入
    发表于 11-15 20:07 2172次阅读

    基于python的numpy深度解析

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

    最详细的 NumPy 图解教程!

    NumPy是Python中用于数据分析、机器学习、科学计算的重要软件包。它极大地简化了向量和矩阵的操作及处理。python的不少数据处理软件包依赖于NumPy作为其基础架构的核心部分(例如
    的头像 发表于 06-09 18:03 2086次阅读
    最详细的 <b class='flag-5'>NumPy</b> 图解教程!

    Numpy详解-轴的概念

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推。在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量。
    的头像 发表于 04-25 10:25 2547次阅读

    Numpy数组的高级操作总结

    NumPy 包含一个迭代器对象numpy.nditer。它是一个有效的多维迭代器对象,可以用于在数组上进行迭代。数组的每个元素可使用 Python 的标准Iterator接口来访问。
    的头像 发表于 05-13 12:53 1106次阅读

    详解Python中的Pandas和Numpy

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

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

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

    一文详解Numpy的高级操作

    NumPy 包含一个迭代器对象numpy.nditer。它是一个有效的多维迭代器对象,可以用于在数组上进行迭代。数组的每个元素可使用 Python 的标准Iterator接口来访问。
    的头像 发表于 07-19 09:57 921次阅读

    List和Numpy Array有什么区别

    Numpy 是Python科学计算的一个核心模块。它提供了非常高效的数组对象,以及用于处理这些数组对象的工具。一个Numpy数组由许多值组成,所有值的类型是相同的。 Python的核心库提供
    的头像 发表于 10-30 10:49 331次阅读
    List和<b class='flag-5'>Numpy</b> Array有什么区别