真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

Numpy的基本用法整理

本篇內容主要講解“Numpy的基本用法整理”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Numpy的基本用法整理”吧!

創(chuàng)新互聯(lián)2013年開創(chuàng)至今,先為鎮(zhèn)海等服務建站,鎮(zhèn)海等地企業(yè),進行企業(yè)商務咨詢服務。為鎮(zhèn)海企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。

前言

Numpy是一個開源的Python科學計算庫,它是python科學計算庫的基礎庫,許多其他著名的科學計算庫如Pandas,Scikit-learn等都要用到Numpy庫的一些功能。

本文主要內容如下:

  1. Numpy數(shù)組對象

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

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

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

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

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

  7. 數(shù)組的類型轉換

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

  9. 數(shù)組的廣播

1 Numpy數(shù)組對象

Numpy中的多維數(shù)組稱為ndarray,這是Numpy中最常見的數(shù)組對象。ndarray對象通常包含兩個部分:

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

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

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

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

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

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

關于向量化和標量化運算,對比下面的參考例子就可以看出差異

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

1.        def pySum():

2.            a = list(range(10000))

3.            b = list(range(10000))

4.            c = []

5.            for iin range(len(a)):

6.                c.append(a[i]**2 + b[i]**2)

7.         

8.            return c

1.        %timeit pySum()

1.        10 loops, best of3:49.4 ms per loop

  • 使用numpy進行向量化運算

1.        import numpyas np

2.        def npSum():

3.            a = np.arange(10000)

4.            b = np.arange(10000)

5.            c = a**2 + b**2

6.            return c

1.        %timeit npSum()

1.        The slowest run took262.56 times longer than the fastest.This could mean that an intermediate resultis being cached.

2.        1000 loops, best of3:128 ?s per loop

從上面的運行結果可以看出,numpy的向量化運算的效率要遠遠高于python的循環(huán)遍歷運算(效率相差好幾百倍)。 (1ms=1000?s)

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

首先需要導入numpy庫,在導入numpy庫時通常使用“np”作為簡寫,這也是Numpy官方倡導的寫法。

當然,你也可以選擇其他簡寫的方式或者直接寫numpy,但還是建議用“np”,這樣你的程序能和大都數(shù)人的程序保持一致。

1.        import numpyas np

創(chuàng)建ndarray數(shù)組的方式有很多種,這里介紹我使用的較多的幾種:

Method 1:基于list或tuple

1.        #一維數(shù)組

2.         

3.        #基于list

4.        arr1 = np.array([1,2,3,4])

5.        print(arr1)

6.         

7.        #基于tuple

8.        arr_tuple = np.array((1,2,3,4))

9.        print(arr_tuple)

10.      

11.     #二維數(shù)組 (2*3)

12.     arr2 = np.array([[1,2,4], [3,4,5]])

13.     arr2

1.        [1234]

2.        [1234]

3.        array([[1,2,4],

4.               [3,4,5]])

請注意:

  • 一維數(shù)組用print輸出的時候為 [1 2 3 4],跟python的列表是有些差異的,沒有“,

  • 在創(chuàng)建二維數(shù)組時,在每個子list外面還有一個"[]",形式為“[[list1], [list2]]

Method 2:基于np.arange

1.        #一維數(shù)組

2.        arr1 = np.arange(5)

3.        print(arr1)

4.         

5.        #二維數(shù)組

6.        arr2 = np.array([np.arange(3), np.arange(3)])

7.        arr2

1.        [01234]

2.        array([[0,1,2],

3.               [0,1,2]])

Method 3:基于arange以及reshape創(chuàng)建多維數(shù)組

1.        #創(chuàng)建三維數(shù)組

2.        arr = np.arange(24).reshape(2,3,4)

3.        arr

1.        array([[[0,  1,  2,  3],

2.                [4,  5,  6,  7],

3.                [8,  9,10,11]],

4.         

5.               [[12,13,14,15],

6.                [16,17,18,19],

7.                [20,21,22,23]]])

  • 請注意:arange的長度與ndarray的維度的乘積要相等,即 24 = 2X3X4

  • 用numpy.random創(chuàng)建數(shù)組的方法,可以參考下面的文章

為什么你用不好Numpy的random函數(shù)?

  • 其他創(chuàng)建ndarray的方法,各位小伙伴們自己可以研究下。

3 Numpy的數(shù)值類型

Numpy的數(shù)值類型如下:

每一種數(shù)據(jù)類型都有相應的數(shù)據(jù)轉換函數(shù),參考示例如下:

1.        np.int8(12.334)

1.        12

1.        np.float64(12)

1.        12.0

1.        np.float(True)

1.        1.0

1.        bool(1)

1.        True

在創(chuàng)建ndarray數(shù)組時,可以指定數(shù)值類型:

1.        a = np.arange(5, dtype=float)

2.        a

1.        array([0.,  1.,  2.,  3.,  4.])

  • 請注意,復數(shù)不能轉換成為整數(shù)類型或者浮點數(shù),比如下面的代碼會運行出錯

1.        # float(42 + 1j)

4 ndarray數(shù)組的屬性

  • dtype屬性,ndarray數(shù)組的數(shù)據(jù)類型,數(shù)據(jù)類型的種類,前面已描述。

1.        np.arange(4, dtype=float)

1.        array([0.,  1.,  2.,  3.])

1.        # 'D'表示復數(shù)類型

2.        np.arange(4, dtype='D')

1.        array([0.+0.j,  1.+0.j,  2.+0.j,  3.+0.j])

1.        np.array([1.22,3.45,6.779], dtype='int8')

1.        array([1,3,6], dtype=int8)

  • ndim屬性,數(shù)組維度的數(shù)量

1.        a = np.array([[1,2,3], [7,8,9]])

2.        a.ndim

1.        2

  • shape屬性,數(shù)組對象的尺度,對于矩陣,即n行m列,shape是一個元組(tuple)

1.        a.shape

1.        (2,3)

  • size屬性用來保存元素的數(shù)量,相當于shape中nXm的值

1.        a.size

1.        6

  • itemsize屬性返回數(shù)組中各個元素所占用的字節(jié)數(shù)大小。

1.        a.itemsize

1.        4

  • nbytes屬性,如果想知道整個數(shù)組所需的字節(jié)數(shù)量,可以使用nbytes屬性。其值等于數(shù)組的size屬性值乘以itemsize屬性值。

1.        a.nbytes

1.        24

1.        a.size*a.itemsize

1.        24

  • T屬性,數(shù)組轉置

1.        b = np.arange(24).reshape(4,6)

2.        b

1.        array([[0,  1,  2,  3,  4,  5],

2.               [6,  7,  8,  9,10,11],

3.               [12,13,14,15,16,17],

4.               [18,19,20,21,22,23]])

1.        b.T

1.        array([[0,  6,12,18],

2.               [1,  7,13,19],

3.               [2,  8,14,20],

4.               [3,  9,15,21],

5.               [4,10,16,22],

6.               [5,11,17,23]])

  • 復數(shù)的實部和虛部屬性,real和imag屬性

1.        d = np.array([1.2+2j,2+3j])

2.        d

1.        array([1.2+2.j,  2.0+3.j])

real屬性返回數(shù)組的實部

1.        d.real

1.        array([1.2,  2. ])

imag屬性返回數(shù)組的虛部

1.        d.imag

1.        array([2.,  3.])

  • flat屬性,返回一個numpy.flatiter對象,即可迭代的對象。

1.        e = np.arange(6).reshape(2,3)

2.        e

1.        array([[0,1,2],

2.               [3,4,5]])

1.        f = e.flat

2.        f

1.        

1.        for itemin f:

2.            print(item)

1.        0

2.        1

3.        2

4.        3

5.        4

6.        5

可通過位置進行索引,如下:

1.        f[2]

1.        2

1.        f[[1,4]]

1.        array([1,4])

也可以進行賦值

1.        e.flat=7

2.        e

1.        array([[7,7,7],

2.               [7,7,7]])


本文題目:Numpy的基本用法整理
文章分享:http://weahome.cn/article/ipepod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部