<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python中NumPy,SciPy,Pandas這些庫(kù)的區(qū)別?

          共 3013字,需瀏覽 7分鐘

           ·

          2021-06-13 16:16

          1、NumPy簡(jiǎn)述
          • NumPy發(fā)展史:NumPy的歷史可以追溯到90年代中期,它的前身為Numeric(用C語(yǔ)言編寫(xiě),主要用來(lái)調(diào)取C++中應(yīng)用)和Numarray(用于處理高維數(shù)組,可靈活的索引、數(shù)據(jù)類型變換、廣播等),2005年出現(xiàn)的NumPy作為繼承者,吸取了Numeric中豐富的C API及Numarray的高維數(shù)組處理能力,成為Python科學(xué)計(jì)算生態(tài)系統(tǒng)的基礎(chǔ)。

          • NumPy的部分功能如下:

          摘自《Python for Data Analysis》

          1. ndarray,一個(gè)具有矢量算術(shù)運(yùn)算和復(fù)雜廣播能力的快速且節(jié)省空間的多維數(shù)組。
          2. 用于對(duì)整組數(shù)據(jù)進(jìn)行快速運(yùn)算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)(無(wú)需編寫(xiě)循環(huán))。
          3. 用于讀寫(xiě)磁盤(pán)數(shù)據(jù)的工具以及用于操作內(nèi)存映射文件的工具。
          4. 線性代數(shù)、隨機(jī)數(shù)生成以及傅里葉變換功能。
          5. 用于集成由C、C++、Fortran等語(yǔ)言編寫(xiě)的代碼的A C API。
          6. 由于NumPy提供了一個(gè)簡(jiǎn)單易用的C API,因此很容易將數(shù)據(jù)傳遞給由低級(jí)語(yǔ)言編寫(xiě)的外部庫(kù),外部庫(kù)也能以NumPy數(shù)組的形式將數(shù)據(jù)返回給Python。這個(gè)功能使Python成為一種包裝C/C++/Fortran歷史代碼庫(kù)的選擇,并使被包裝庫(kù)擁有一個(gè)動(dòng)態(tài)的、易用的接口。
          • NumPy本身并沒(méi)有提供多么高級(jí)的數(shù)據(jù)分析功能,理解NumPy數(shù)組以及面向數(shù)組的計(jì)算將有助于你更加高效地使用依賴NumPy的Python科學(xué)計(jì)算庫(kù),如Biopython、SciPy、statsmodels、scikit-learn、Pandas等等。

          • NumPy之于數(shù)值計(jì)算特別重要的原因之一,是因?yàn)樗梢愿咝幚?strong>大數(shù)組的數(shù)據(jù), 這是因?yàn)椋?/p>

          摘自《Python for Data Analysis》

          1. NumPy是在一個(gè)連續(xù)的內(nèi)存塊中存儲(chǔ)數(shù)據(jù),獨(dú)立于其他Python內(nèi)置對(duì)象。
          2. NumPy的C語(yǔ)言編寫(xiě)的算法庫(kù)可以操作內(nèi)存,而不必進(jìn)行類型檢查或其它前期 工作。比起Python的內(nèi)置序列,NumPy數(shù)組使用的內(nèi)存更少。
          3. NumPy可以在整個(gè)數(shù)組上執(zhí)行復(fù)雜的計(jì)算,而不需要Python的for循環(huán)。

          實(shí)例證實(shí)NumPy的高效


          以下來(lái)自文獻(xiàn)

          2、NumPy數(shù)組ndarray

          • a, The NumPy array data structure and its associated metadata fields. -數(shù)組結(jié)構(gòu):數(shù)據(jù)、數(shù)據(jù)類型、維度、內(nèi)存中向前移動(dòng)的字節(jié)數(shù)
          • b, Indexing an array with slices and steps. These operations return a ‘view’ of the original data. -數(shù)組索引
          • c, Indexing an array with masks, scalar coordinates or other arrays, so that it returns a ‘copy’ of the original data. In the bottom example, an array is indexed with other arrays; this broadcasts the indexing arguments before performing the lookup. 使用其他數(shù)組索引數(shù)組
          • d, Vectorization efficiently applies operations to groups of elements.-數(shù)組矢量化
          • e, Broadcasting in the multiplication of two-dimensional arrays. -數(shù)組廣播
          • f, Reduction operations act along one or more axes. In this example, an array is summed along select axes to produce a vector, or along two axes consecutively to produce a scalar. -數(shù)組按行按列運(yùn)算
          • g, Example NumPy code, illustrating some of these concepts. -以上概念的example

          3、哪些Python科學(xué)計(jì)算生態(tài)系統(tǒng)依賴NumPy?

          • 下圖非常清晰,NumPy在生物學(xué)(Biopython)、物理、化學(xué)、天文學(xué)、地球科學(xué)、心理學(xué)、材料科學(xué)、工程學(xué)、金融和經(jīng)濟(jì)學(xué)等領(lǐng)域的研究分析中都起著至關(guān)重要的作用。

          4、深度學(xué)習(xí)和人工智能時(shí)代NumPy如何突圍?

          • NumPy 在 CPU 上性能超級(jí)nice,接近編譯語(yǔ)言【如像C/C++等】;
          • 但是,隨著深度學(xué)習(xí)和人工智能的出現(xiàn),加速需求催生了專用加速器硬件【如 GPU、TPU 和 FPGA】,由于 NumPy 具有的內(nèi)存內(nèi)數(shù)據(jù)模型,它無(wú)法直接使用這類存儲(chǔ)和專用硬件。
          • NumPy社區(qū)為了應(yīng)對(duì)挑戰(zhàn),開(kāi)發(fā)出了NumPy array protocols,包含諸多函數(shù)【如 Dask、CuPy、PyData/Sparse等】以協(xié)調(diào)外部數(shù)組對(duì)象對(duì)NumPy的調(diào)用。

          5、NumPy的下一個(gè)十年

          • 新的設(shè)備將被開(kāi)發(fā)出來(lái),現(xiàn)有的專用硬件也不斷發(fā)展,NumPy如何兼容?
          • 科學(xué)數(shù)據(jù)規(guī)模將繼續(xù)擴(kuò)大;
          • 新一代語(yǔ)言,如Rust、Julia和LLVM、解釋器和編譯器,將創(chuàng)造新的概念和數(shù)據(jù)結(jié)構(gòu)。

          參考資料

          https://www.nature.com/articles/s41586-020-2649-2
          Harris CR, Millman KJ, van der Walt SJ, et al. Array programming with NumPy. Nature. 2020;585(7825):357-362. doi:10.1038/s41586-020-2649-2

          ···  END  ···

          推薦閱讀:
          一、Number(數(shù)字)
          Python基礎(chǔ)之?dāng)?shù)字(Number)超級(jí)詳解
          Python隨機(jī)模塊22個(gè)函數(shù)詳解
          Python數(shù)學(xué)math模塊55個(gè)函數(shù)詳解
          二、String(字符串)
          Python字符串的45個(gè)方法詳解
          Pandas向量化字符串操作
          三、List(列表)
          超級(jí)詳解系列-Python列表全面解析
          Python輕量級(jí)循環(huán)-列表推導(dǎo)式
          四、Tuple(元組)
          Python的元組,沒(méi)想象的那么簡(jiǎn)單
          五、Set(集合)
          全面理解Python集合,17個(gè)方法全解,看完就夠了
          六、Dictionary(字典)
          Python字典詳解-超級(jí)完整版
          七、內(nèi)置函數(shù)
          Python初學(xué)者必須吃透這69個(gè)內(nèi)置函數(shù)!
          八、正則模塊
          Python正則表達(dá)式入門(mén)到入魔
          筆記 | 史上最全的正則表達(dá)式
          八、系統(tǒng)操作
          Python之shutil模塊11個(gè)常用函數(shù)詳解
          Python之OS模塊39個(gè)常用函數(shù)詳解
          九、進(jìn)階模塊
          【萬(wàn)字長(zhǎng)文詳解】Python庫(kù)collections,讓你擊敗99%的Pythoner
          高手如何在Python中使用collections模塊


          瀏覽 42
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久操视频在线免费观看 | www.天天好逼 | 日韩特级片 | 免费观看一级黄片 | 成人做爰A片免费播放金桔视频 |