1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【Python】機器學習矩陣運算必學庫Numpy首秀!

        共 6518字,需瀏覽 14分鐘

         ·

        2022-02-12 13:28

        公眾號:尤而小屋
        作者:Peter
        編輯:Peter

        大家好,我是Peter~

        開始更新numpy相關的文章,本文介紹numpy中的25個小案例,主要內(nèi)容是如何利用numpy來生成向量(一維數(shù)組),矩陣和高維數(shù)組等

        numpy介紹

        NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學函數(shù)庫。

        NumPy 是一個運行速度非??斓臄?shù)學庫,主要用于數(shù)組計算,包含:

        • 一個強大的N維數(shù)組對象 ndarray
        • 廣播功能函數(shù)
        • 整合 C/C++/Fortran 代碼的工具
        • 線性代數(shù)、傅里葉變換、隨機數(shù)生成等功能

        導入numpy

        import?numpy?as?np

        打印numpy的版本和配置信息

        print(np.version)

        print(np.show_config)

        查看函數(shù)幫助文檔

        #?np.info(np.abs)

        創(chuàng)建0向量

        np.zeros(10)
        array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

        np.zeros((5,2))
        array([[0., 0.],
        [0., 0.],
        [0., 0.],
        [0., 0.],
        [0., 0.]])
        np.zeros((2,2,3))
        array([[[0., 0., 0.],
        [0., 0., 0.]],

        [[0., 0., 0.],
        [0., 0., 0.]]])

        改變0向量指定位置的值

        z?=?np.zeros((3,4))
        z
        array([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])
        z[2,3]?=?1
        z[1,1]?=?2

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

        找到非0的值

        np.nonzero(z)
        (array([1, 2]), array([1, 3]))

        創(chuàng)建全1向量、數(shù)組

        np.ones(6)
        array([1., 1., 1., 1., 1., 1.])
        np.ones((3,2))
        array([[1., 1.],
        [1., 1.],
        [1., 1.]])
        np.ones([2,3,2])
        array([[[1., 1.],
        [1., 1.],
        [1., 1.]],

        [[1., 1.],
        [1., 1.],
        [1., 1.]]])

        創(chuàng)建單位矩陣-eye

        np.eye(4)
        array([[1., 0., 0., 0.],
        [0., 1., 0., 0.],
        [0., 0., 1., 0.],
        [0., 0., 0., 1.]])
        np.eye(4,dtype=int)
        array([[1, 0, 0, 0],
        [0, 1, 0, 0],
        [0, 0, 1, 0],
        [0, 0, 0, 1]])

        自定義數(shù)據(jù)類型

        np.ones([2,3])??#?默認是浮點數(shù)
        array([[1., 1., 1.],
        [1., 1., 1.]])
        np.ones([2,3],dtype=int)??#?指定為int類型
        array([[1, 1, 1],
        [1, 1, 1]])

        列表轉數(shù)組

        lst?=?[1,2,3,4]

        np.array(lst)
        array([1, 2, 3, 4])
        #?指定數(shù)組類型

        lst?=?[1,2,3,4]
        np.array(lst,?dtype=float)
        array([1., 2., 3., 4.])

        嵌套列表轉數(shù)組

        lst1?=?[[1,2,3],[4,5,6]]

        np.array(lst1)
        array([[1, 2, 3],
        [4, 5, 6]])
        #?指定數(shù)據(jù)類型

        lst1?=?[[1,2,3],[4,5,6]]

        np.array(lst1,?dtype=float)
        array([[1., 2., 3.],
        [4., 5., 6.]])

        元組轉數(shù)組

        t1?=?(9,8,7)
        np.array(t1)
        array([9, 8, 7])

        嵌套元組轉數(shù)組

        t2?=?((9,8,7),(6,5,4))
        np.array(t2)
        array([[9, 8, 7],
        [6, 5, 4]])

        列表和元組混合

        lt?=?[(1,2,3),(7,8,9)]

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

        迭代器轉數(shù)組

        range_number?=?range(3,8)

        np.array(range_number)
        array([3, 4, 5, 6, 7])
        #?指定類型

        range_number?=?range(3,?8)
        np.array(range_number,?dtype=float)
        array([3., 4., 5., 6., 7.])

        特殊矩陣1

        邊界值為1,其他為0

        b?=?np.ones([6,6])
        b
        array([[1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.]])
        b[1:-1,1:-1]?=?0

        b
        array([[1., 1., 1., 1., 1., 1.],
        [1., 0., 0., 0., 0., 1.],
        [1., 0., 0., 0., 0., 1.],
        [1., 0., 0., 0., 0., 1.],
        [1., 0., 0., 0., 0., 1.],
        [1., 1., 1., 1., 1., 1.]])

        特殊矩陣2

        用0填充矩陣的邊界

        c?=?np.ones((6,6))
        c
        array([[1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.],
        [1., 1., 1., 1., 1., 1.]])
        np.pad(c,pad_width=1,mode="constant",constant_values=0)
        array([[0., 0., 0., 0., 0., 0., 0., 0.],
        [0., 1., 1., 1., 1., 1., 1., 0.],
        [0., 1., 1., 1., 1., 1., 1., 0.],
        [0., 1., 1., 1., 1., 1., 1., 0.],
        [0., 1., 1., 1., 1., 1., 1., 0.],
        [0., 1., 1., 1., 1., 1., 1., 0.],
        [0., 1., 1., 1., 1., 1., 1., 0.],
        [0., 0., 0., 0., 0., 0., 0., 0.]])

        特殊矩陣3

        6*6的矩陣,對角線下方的值為1,2,3,4,5

        np.diag(1?+?np.arange(5),?k=-1)
        array([[0, 0, 0, 0, 0, 0],
        [1, 0, 0, 0, 0, 0],
        [0, 2, 0, 0, 0, 0],
        [0, 0, 3, 0, 0, 0],
        [0, 0, 0, 4, 0, 0],
        [0, 0, 0, 0, 5, 0]])

        np.arange函數(shù)

        numpy 包中的使用 arange 函數(shù)創(chuàng)建數(shù)值范圍并返回 ndarray 對象,函數(shù)使用方法為:

        numpy.arange(start,?stop,?step,?dtype)
        • start:起始值,默認為0
        • stop:終止值,不包含
        • step:步長,默認為1
        • dtype:返回數(shù)組的數(shù)據(jù)類型
        np.arange(10)
        array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
        #?指定步長
        np.arange(0,10,2)
        array([0, 2, 4, 6, 8])
        #?指定類型
        np.arange(0,10,2,dtype=float)
        array([0., 2., 4., 6., 8.])

        創(chuàng)建隨機數(shù)組

        np.random.random((2,3,2))
        array([[[0.56045087, 0.15566786],
        [0.34963774, 0.51837142],
        [0.68895046, 0.04980068]],

        [[0.98352437, 0.47189043],
        [0.30430488, 0.49057744],
        [0.20020709, 0.90466043]]])

        Pandas數(shù)據(jù)轉數(shù)組

        import?pandas?as?pd
        s?=?pd.Series([1,2,3,4])

        np.array(s)
        array([1, 2, 3, 4])
        d?=?pd.DataFrame([[1,2,3,4],[9,8,7,6]])

        np.array(d)
        array([[1, 2, 3, 4],
        [9, 8, 7, 6]])

        反轉數(shù)組

        ten?=?np.arange(10)
        ten
        array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
        ten[::-1]
        array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])

        reshape函數(shù)

        主要是用來改變數(shù)組的形狀

        arr?=?np.arange(16)
        arr
        array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15])
        arr.shape
        (16,)
        arr.reshape((4,4))
        array([[ 0,  1,  2,  3],
        [ 4, 5, 6, 7],
        [ 8, 9, 10, 11],
        [12, 13, 14, 15]])
        arr.reshape((2,8))
        array([[ 0,  1,  2,  3,  4,  5,  6,  7],
        [ 8, 9, 10, 11, 12, 13, 14, 15]])
        arr.reshape((8,2))
        array([[ 0,  1],
        [ 2, 3],
        [ 4, 5],
        [ 6, 7],
        [ 8, 9],
        [10, 11],
        [12, 13],
        [14, 15]])
        arr.reshape((1,16))
        array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15]])

        我們需要特別注意-1的使用,numpy會自動生成相應的shape值

        arr.reshape((8,-1))
        array([[ 0,  1],
        [ 2, 3],
        [ 4, 5],
        [ 6, 7],
        [ 8, 9],
        [10, 11],
        [12, 13],
        [14, 15]])
        arr.reshape((-1,8))
        array([[ 0,  1,  2,  3,  4,  5,  6,  7],
        [ 8, 9, 10, 11, 12, 13, 14, 15]])

        np.linspace函數(shù)

        用于構建一個等差數(shù)列的數(shù)組,使用方法為:

        np.linspace(
        ????start,??#?起始值
        ????stop,??#?終止值,如果endpoint為true,該值包含于數(shù)列中
        ????num=50,??#?生成的樣本量,默認為50
        ????endpoint=True,??#是否包含末尾的值;默認為True
        ????retstep=False,??#??為True時,生成的數(shù)組中會顯示間距,反之不
        ????dtype=None??#?數(shù)據(jù)類型
        )
        np.linspace(1,10,5)
        array([ 1.  ,  3.25,  5.5 ,  7.75, 10.  ])

        可以不包含末尾的數(shù)值:

        np.linspace(1,10,5,endpoint=False)
        array([1. , 2.8, 4.6, 6.4, 8.2])

        全部是1的等差數(shù)列:

        #?全部是1的等差數(shù)列
        np.linspace(1,1,10)
        array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

        加上restep參數(shù),則會顯示步長:

        np.linspace(1,10,5,retstep=True)
        (array([ 1.  ,  3.25,  5.5 ,  7.75, 10.  ]), 2.25)

        np.logspace函數(shù)

        主要是用于生成等比數(shù)列,使用方法為:

        np.logspace(
        ????start,?#?base?**?start(指數(shù))
        ????stop,?# base ** stop;如果endpoint為true,該值包含于數(shù)列中
        ????num=50,?
        ????endpoint=True,?
        ????base=10.0,??#?默認底數(shù)為10
        ????dtype=None
        )
        np.logspace(1,5,num=10)
        array([1.00000000e+01, 2.78255940e+01, 7.74263683e+01, 2.15443469e+02,
        5.99484250e+02, 1.66810054e+03, 4.64158883e+03, 1.29154967e+04,
        3.59381366e+04, 1.00000000e+05])

        指定不同的底數(shù);第一個數(shù)為2的0次方,為1:

        np.logspace(0,8,num=10,base=2)
        array([  1.        ,   1.85174942,   3.42897593,   6.34960421,
        11.75787594, 21.77264 , 40.3174736 , 74.65785853,
        138.24764658, 256. ])



        往期精彩回顧




        瀏覽 79
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日日夜夜免费精品 | 欧一级A片一区二区三区电影网站 | 日韩制服丝袜一区二区 | 国产三级电影在线 | 精品久久久久久久久久久久久久 | 男人操女人下面的视频 | www靠逼 | mm131妲己极品大尺度 | 少妇被三个黑人4p到爽 | 国产女人18水真多18精品 |