Numpy是一個(gè)開(kāi)源的Python科學(xué)計(jì)算庫(kù),它是python科學(xué)計(jì)算庫(kù)的基礎(chǔ)庫(kù),許多其他著名的科學(xué)計(jì)算庫(kù)如Pandas,Scikit-learn等都要用到Numpy庫(kù)的一些功能。

本文主要內(nèi)容如下:

  1. Numpy數(shù)組對(duì)象

  2. 創(chuàng)建ndarray數(shù)組

  3. Numpy的數(shù)值類(lèi)型

  4. ndarray數(shù)組的屬性

  5. ndarray數(shù)組的切片和索引

  6. 處理數(shù)組形狀

  7. 數(shù)組的類(lèi)型轉(zhuǎn)換

  8. numpy常用統(tǒng)計(jì)函數(shù)

  9. 數(shù)組的廣播

1 Numpy數(shù)組對(duì)象

Numpy中的多維數(shù)組稱(chēng)為ndarray,這是Numpy中最常見(jiàn)的數(shù)組對(duì)象。ndarray對(duì)象通常包含兩個(gè)部分:

  • ndarray數(shù)據(jù)本身

  • 描述數(shù)據(jù)的元數(shù)據(jù)

Numpy數(shù)組的優(yōu)勢(shì)

  • Numpy數(shù)組通常是由相同種類(lèi)的元素組成的,即數(shù)組中的數(shù)據(jù)項(xiàng)的類(lèi)型一致。這樣有一個(gè)好處,由于知道數(shù)組元素的類(lèi)型相同,所以能快速確定存儲(chǔ)數(shù)據(jù)所需空間的大小。

  • Numpy數(shù)組能夠運(yùn)用向量化運(yùn)算來(lái)處理整個(gè)數(shù)組,速度較快;而Python的列表則通常需要借助循環(huán)語(yǔ)句遍歷列表,運(yùn)行效率相對(duì)來(lái)說(shuō)要差。

  • Numpy使用了優(yōu)化過(guò)的C API,運(yùn)算速度較快

關(guān)于向量化和標(biāo)量化運(yùn)算,對(duì)比下面的參考例子就可以看出差異

  • 使用python的list進(jìn)行循環(huán)遍歷運(yùn)算

def pySum():
    a = list(range(10000))
    b = list(range(10000))
    c = []    for i in range(len(a)):
        c.append(a[i]**2 + b[i]**2)    return c
%timeit pySum()
10 loops, best of 3: 49.4 ms per loop