<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】機(jī)器學(xué)習(xí)矩陣運(yùn)算必學(xué)庫Numpy首秀!

          共 6518字,需瀏覽 14分鐘

           ·

          2022-02-12 13:28

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

          大家好,我是Peter~

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

          numpy介紹

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

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

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

          導(dǎo)入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])??#?默認(rèn)是浮點(diǎn)數(shù)
          array([[1., 1., 1.],
          [1., 1., 1.]])
          np.ones([2,3],dtype=int)??#?指定為int類型
          array([[1, 1, 1],
          [1, 1, 1]])

          列表轉(zhuǎn)數(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.])

          嵌套列表轉(zhuǎn)數(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.]])

          元組轉(zhuǎn)數(shù)組

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

          嵌套元組轉(zhuǎn)數(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]])

          迭代器轉(zhuǎn)數(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:起始值,默認(rèn)為0
          • stop:終止值,不包含
          • step:步長,默認(rèn)為1
          • dtype:返回?cái)?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)建隨機(jī)數(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ù)轉(zhuǎn)數(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]])

          反轉(zhuǎn)數(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會自動生成相應(yīng)的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ù)

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

          np.linspace(
          ????start,??#?起始值
          ????stop,??#?終止值,如果endpoint為true,該值包含于數(shù)列中
          ????num=50,??#?生成的樣本量,默認(rèn)為50
          ????endpoint=True,??#是否包含末尾的值;默認(rèn)為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,??#?默認(rèn)底數(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
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  aaa久久久国产 | 人妻丰满熟妇av无码区波多野 | 99精品视频在线 | 哪个网站可以看毛片 | 欧美亚洲日韩手机在线 |