0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是NumPy?選擇NUMPY的原因及其工作原理是什么

NVIDIA英偉達(dá) ? 來(lái)源:NVIDIA英偉達(dá) ? 作者:NVIDIA英偉達(dá) ? 2022-07-15 09:37 ? 次閱讀

NumPy 是一個(gè)免費(fèi)的開源 Python 庫(kù),用于 n 維數(shù)組(也稱為張量)處理和數(shù)值計(jì)算。

什么是 NUMPY?

NumPy 是一個(gè)免費(fèi)的 Python 編程語(yǔ)言開源庫(kù),它功能強(qiáng)大、已經(jīng)過(guò)充分優(yōu)化,并增加了對(duì)大型多維數(shù)組(也稱為矩陣或張量)的支持。NumPy 還提供了一系列高級(jí)數(shù)學(xué)函數(shù),可與這些數(shù)組結(jié)合使用。其中包括基本的線性代數(shù)、隨機(jī)模擬、傅立葉變換、三角運(yùn)算和統(tǒng)計(jì)運(yùn)算。

NumPy 代表 “numerical Python”,基于早期的 Numeric 和 Numarray 庫(kù)構(gòu)建而成,旨在為 Python 提供快速的數(shù)字計(jì)算。如今,NumPy 貢獻(xiàn)者眾多,并得到了 NumFOCUS 的贊助。

作為科學(xué)計(jì)算的核心庫(kù),NumPy 是 Pandas、Scikit-learnSciPy等庫(kù)的基礎(chǔ)。它廣泛應(yīng)用于在大型數(shù)組上執(zhí)行優(yōu)化的數(shù)學(xué)運(yùn)算。

選擇 NUMPY 的原因及其工作原理

多維數(shù)組是 NumPy 庫(kù)的中心數(shù)據(jù)結(jié)構(gòu),通常代表值的網(wǎng)格。NumPy 的 ndarray 是一個(gè)同構(gòu)的 n 維數(shù)組對(duì)象,描述了類似類型的元素或項(xiàng)的集合。在這些ndarrays中,每個(gè)項(xiàng)都包含大小相同的內(nèi)存塊,且每個(gè)內(nèi)存塊都采用同一識(shí)別方式。這能夠高效、快速、輕松地處理科學(xué)計(jì)算的數(shù)據(jù)。

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

NumPy 數(shù)組運(yùn)算速度比 Python Lists 要快,因?yàn)?NumPy 數(shù)組是類似數(shù)據(jù)類型的編譯,并且在內(nèi)存中密集打包。相比之下,Python Lists 可以具有不同的數(shù)據(jù)類型,在系統(tǒng)執(zhí)行計(jì)算時(shí)會(huì)增加對(duì)這些數(shù)據(jù)類型的限制。

| NumPy 的優(yōu)勢(shì)

NumPy 具有以下重要優(yōu)勢(shì)和特性:

  • NumPy 的 ndarray 計(jì)算概念是 Python 和 PyData 科學(xué)生態(tài)系統(tǒng)的核心。

  • NumPy 為高度優(yōu)化的 C 函數(shù)提供了 Python 前端,可提供簡(jiǎn)單的 Python 接口,并實(shí)現(xiàn)編譯代碼的速度。

  • NumPy 強(qiáng)大的 N 維數(shù)組對(duì)象可與各種庫(kù)集成。

  • 與使用 Python 的內(nèi)置列表相比,NumPy 數(shù)組可以更高效地使用大型數(shù)據(jù)集來(lái)執(zhí)行高級(jí)數(shù)學(xué)運(yùn)算,且使用的代碼更少。對(duì)于大小和速度至關(guān)重要的科學(xué)計(jì)算序列而言,這一點(diǎn)至關(guān)重要。

NUMPY 的重要意義

NumPy 讓數(shù)據(jù)科學(xué)家更易于使用 Python 并提供了 C 級(jí)優(yōu)化,有助于快速創(chuàng)建高效代碼,進(jìn)行探索數(shù)據(jù)分析和模型構(gòu)建。如今,要想在科學(xué)計(jì)算領(lǐng)域取得成功,對(duì)算法進(jìn)行快速原型設(shè)計(jì)必不可少,而這二者的實(shí)現(xiàn)對(duì)此至關(guān)重要。因此,可以使用 NumPy 在 Python 中實(shí)現(xiàn)多維數(shù)據(jù)通信。

利用 PYTHON 進(jìn)行 GPU 加速計(jì)

在架構(gòu)方面,CPU 僅由幾個(gè)具有大緩存內(nèi)存的核心組成,一次只可以處理幾個(gè)軟件線程。相比之下,GPU 由數(shù)百個(gè)核心組成,可以同時(shí)處理數(shù)千個(gè)線程。

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

NumPy 已成為在 Python 中實(shí)現(xiàn)多維數(shù)據(jù)通信的實(shí)際方法。然而,對(duì)于多核 GPU,這種實(shí)施并非最佳。因此,對(duì)于較新的針對(duì) GPU 優(yōu)化的庫(kù)實(shí)施 Numpy 數(shù)組或與 Numpy 數(shù)組進(jìn)行互操作。

NVIDIACUDA是 NVIDIA 專為 GPU 通用計(jì)算開發(fā)的并行計(jì)算平臺(tái)和編程模型。CUDA 數(shù)組接口是描述 GPU 數(shù)組(張量)的標(biāo)準(zhǔn)格式,允許在不同的庫(kù)之間共享 GPU 數(shù)組,而無(wú)需復(fù)制或轉(zhuǎn)換數(shù)據(jù)。CUDA 數(shù)組由 Numba、CuPy、MXNet 和 PyTorch 提供支持。

  • CuPy是一個(gè)利用 GPU 庫(kù)在 NVIDIA GPU 上實(shí)施 NumPy CUDA 數(shù)組的庫(kù)。

  • Numba是一個(gè) Python 編譯器,可以編譯 Python 代碼,以在支持 CUDA 的 GPU 上執(zhí)行。Numba 直接支持 NumPy 數(shù)組。

  • Apache MXNet是一個(gè)靈活高效的深度學(xué)習(xí)庫(kù)。可以使用它的 NDArray 將模型的輸入和輸出表示和操作為多維數(shù)組。NDArray 類似于 NumPy 的 ndarray,但它們可以在 GPU 上運(yùn)行,以加速計(jì)算。

  • PyTorch是一種開源深度學(xué)習(xí)框架,以出色的靈活性和易用性著稱。Pytorch Tensors 與 NumPy 的 ndarray 類似,但它們可以在 GPU 上運(yùn)行,加速計(jì)算。

NVIDIA GPU 加速的端到端數(shù)據(jù)科學(xué)

基于CUDA-X AI創(chuàng)建的 NVIDIARAPIDS開源軟件庫(kù)套件使您完全能夠在 GPU 上執(zhí)行端到端數(shù)據(jù)科學(xué)和分析流程。此套件依靠 NVIDIA CUDA 基元進(jìn)行低級(jí)別計(jì)算優(yōu)化,但通過(guò)用戶友好型 Python 接口實(shí)現(xiàn)了 GPU 并行化和高帶寬顯存速度。

借助 RAPIDS GPU DataFrame,數(shù)據(jù)可以通過(guò)一個(gè)類似 Pandas 的接口加載到 GPU 上,然后用于各種連接的機(jī)器學(xué)習(xí)和圖形分析算法,而無(wú)需離開 GPU。這種級(jí)別的互操作性是通過(guò) Apache Arrow 這樣的庫(kù)實(shí)現(xiàn)的。僅需一行代碼,即可從 NumPy 數(shù)組、Pandas DataFrame 和 PyArrow 表格創(chuàng)建 GPU 數(shù)據(jù)框。其他項(xiàng)目可以使用數(shù)組接口交換 CUDA 數(shù)據(jù)。這可加速端到端流程(從數(shù)據(jù)準(zhǔn)備到機(jī)器學(xué)習(xí),再到深度學(xué)習(xí))。

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

RAPIDS 支持在許多熱門數(shù)據(jù)科學(xué)庫(kù)之間共享設(shè)備內(nèi)存。這樣可將數(shù)據(jù)保留在 GPU 上,并省去了來(lái)回復(fù)制主機(jī)內(nèi)存的高昂成本。

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











審核編輯:劉清
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4744

    瀏覽量

    129017
  • 數(shù)據(jù)通信
    +關(guān)注

    關(guān)注

    2

    文章

    432

    瀏覽量

    33787
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84787

原文標(biāo)題:NVIDIA 大講堂 | 什么是 NUMPY?

文章出處:【微信號(hào):NVIDIA_China,微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    numpy數(shù)組的基本用法

    numpy提供了一種數(shù)據(jù)類型,提供了數(shù)據(jù)分析的運(yùn)算基礎(chǔ),安裝方式
    發(fā)表于 09-04 16:24 ?1303次閱讀
    <b class='flag-5'>numpy</b>數(shù)組的基本用法

    Linux的numpy安裝步驟

    今天想使用pyspark的交互模式下執(zhí)行from pyspark.mllib.regression import LabeledPoint時(shí),報(bào)了下面這個(gè)錯(cuò)誤,錯(cuò)誤提示沒(méi)有安裝numpy
    發(fā)表于 07-24 06:47

    Numpy的學(xué)習(xí)總結(jié)

    Numpy學(xué)習(xí)筆記
    發(fā)表于 07-16 08:27

    基于NumPy的pandas工具

    :pandas 是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建的。二、使用步驟1.引入庫(kù)代碼如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport
    發(fā)表于 08-16 08:47

    SoC中如何使用OpenCV?導(dǎo)入cv2程序提示找不到numpynumpy導(dǎo)入失敗是怎么回事?

    SoC中如何使用OpenCV?導(dǎo)入cv2,程序提示找不到numpynumpy導(dǎo)入失???
    發(fā)表于 09-19 08:00

    Python中NumPy擴(kuò)展包簡(jiǎn)介及案例詳解

    NumPy是Python語(yǔ)言的一個(gè)擴(kuò)展包。支持多維數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。NumPy提供了與Matlab相似的功能與操作方式,因?yàn)閮烧呓詾橹弊g語(yǔ)言。 NumPy通常
    發(fā)表于 11-15 12:31 ?1999次閱讀

    靈活運(yùn)用Python中numpy庫(kù)的矩陣運(yùn)算

    Python的numpy庫(kù)提供矩陣運(yùn)算的功能,因此我們?cè)谛枰仃囘\(yùn)算的時(shí)候,需要導(dǎo)入numpy的包。 1.numpy的導(dǎo)入和使用 from numpy import *;#導(dǎo)入
    發(fā)表于 11-15 20:07 ?2331次閱讀

    基于python的numpy深度解析

    numpy(Numerical Python)提供了python對(duì)多維數(shù)組對(duì)象的支持:ndarray,具有矢量運(yùn)算能力,快速、節(jié)省空間。numpy支持高級(jí)大量的維度數(shù)組與矩陣運(yùn)算,此外也針對(duì)數(shù)組運(yùn)算提供大量的數(shù)學(xué)函數(shù)庫(kù)。
    的頭像 發(fā)表于 01-24 13:55 ?5274次閱讀
    基于python的<b class='flag-5'>numpy</b>深度解析

    最詳細(xì)的 NumPy 圖解教程!

    NumPy是Python中用于數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、科學(xué)計(jì)算的重要軟件包。它極大地簡(jiǎn)化了向量和矩陣的操作及處理。python的不少數(shù)據(jù)處理軟件包依賴于NumPy作為其基礎(chǔ)架構(gòu)的核心部分(例如
    的頭像 發(fā)表于 06-09 18:03 ?2496次閱讀
    最詳細(xì)的 <b class='flag-5'>NumPy</b> 圖解教程!

    解讀12 種 Numpy 和 Pandas 高效函數(shù)技巧

    本文分享給大家 12 種 Numpy 和 Pandas 函數(shù),這些高效的函數(shù)會(huì)令數(shù)據(jù)分析更為容易、便捷。最后,讀者也可以在 GitHub 項(xiàng)目中找到本文所用代碼的 Jupyter Notebook
    的頭像 發(fā)表于 06-29 17:05 ?1511次閱讀

    Numpy詳解-軸的概念

    NumPy數(shù)組的維數(shù)稱為秩(rank),一維數(shù)組的秩為1,二維數(shù)組的秩為2,以此類推。在NumPy中,每一個(gè)線性的數(shù)組稱為是一個(gè)軸(axes),秩其實(shí)是描述軸的數(shù)量。
    的頭像 發(fā)表于 04-25 10:25 ?2940次閱讀

    Numpy數(shù)組的高級(jí)操作總結(jié)

    NumPy 包含一個(gè)迭代器對(duì)象numpy.nditer。它是一個(gè)有效的多維迭代器對(duì)象,可以用于在數(shù)組上進(jìn)行迭代。數(shù)組的每個(gè)元素可使用 Python 的標(biāo)準(zhǔn)Iterator接口來(lái)訪問(wèn)。
    的頭像 發(fā)表于 05-13 12:53 ?1367次閱讀

    詳解Python中的Pandas和Numpy庫(kù)

    pandas、numpy是Python數(shù)據(jù)科學(xué)中非常常用的庫(kù),numpy是Python的數(shù)值計(jì)算擴(kuò)展,專門用來(lái)處理矩陣,它的運(yùn)算效率比列表更高效。
    的頭像 發(fā)表于 05-25 12:49 ?2599次閱讀

    Python編程語(yǔ)言開源庫(kù)NUMPY工作原理及優(yōu)勢(shì)

    NumPy 是一個(gè)免費(fèi)的 Python 編程語(yǔ)言開源庫(kù),它功能強(qiáng)大、已經(jīng)過(guò)充分優(yōu)化,并增加了對(duì)大型多維數(shù)組(也稱為矩陣或張量)的支持。NumPy 還提供了一系列高級(jí)數(shù)學(xué)函數(shù),可與這些數(shù)組結(jié)合使用。其中包括基本的線性代數(shù)、隨機(jī)模擬、傅立葉變換、三角運(yùn)算和統(tǒng)計(jì)運(yùn)算。
    的頭像 發(fā)表于 07-15 09:35 ?1878次閱讀

    List和Numpy Array有什么區(qū)別

    Numpy 是Python科學(xué)計(jì)算的一個(gè)核心模塊。它提供了非常高效的數(shù)組對(duì)象,以及用于處理這些數(shù)組對(duì)象的工具。一個(gè)Numpy數(shù)組由許多值組成,所有值的類型是相同的。 Python的核心庫(kù)提供了
    的頭像 發(fā)表于 10-30 10:49 ?899次閱讀
    List和<b class='flag-5'>Numpy</b> Array有什么區(qū)別