乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Numpy中的讀取文件操作和高級庫

       CDA數(shù)據(jù)分析師 2019-04-09

      跟Python的IO讀寫功能一樣,numpy中也有文件的讀寫功能,將ndarray對象也可以保存到磁盤文件并從磁盤文件加載。方便保存使用numpy編寫的代碼。在numpy中也有一些高級的庫,今天我們這里簡單講一下矩陣庫和線性代數(shù)的庫,讓我們更了解numpy這個(gè)模塊。

      一、IO操作

      Numpy 可以讀寫磁盤上的文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。NumPy 為 ndarray 對象引入了一個(gè)簡單的文件格式:npy。npy 文件用于存儲(chǔ)重建 ndarray 所需的數(shù)據(jù)、圖形、dtype 和其他信息?,F(xiàn)在在Numpy中可用的IO功能有:

      • Load()和save()函數(shù)處理numpy二進(jìn)制文件(需要帶npy擴(kuò)展名)

      • Loadtxt()和savetxt()函數(shù)處理正常的文本文件

      Numpy為ndarray對象引入了一個(gè)簡單的文件格式,這個(gè)npy文件在磁盤文件中,存儲(chǔ)重建ndarray 所需的數(shù)據(jù)、圖形、dtype 和其他信息,以便正確獲取數(shù)組,即使該文件在具有不同架構(gòu)的另一臺(tái)機(jī)器上。

      1. numpy.save()

      函數(shù)將輸入的數(shù)組存儲(chǔ)在具有npy擴(kuò)展名的磁盤文件中。

      為了從outfile.npy重建數(shù)組,需要使用load()函數(shù)


      save() 和 load() 函數(shù)接受一個(gè)附加的布爾參數(shù) allow_pickles。Python 中的 pickle 用于 在保存到磁盤文件或從磁盤文件讀取之前,對對象進(jìn)行序列化和反序列化。

      2、savetxt()

      函數(shù)以簡單文本文件格式存儲(chǔ)和獲取數(shù)組數(shù)據(jù),是通過 savetxt() 和 loadtx() 函數(shù)完成的。

      savetxt() 和 loadtxt() 函數(shù)接受附加的可選參數(shù),例如頁首,頁尾和分隔符。

      二、numpy中的矩陣庫

      NumPy 包包含一個(gè) Matrix 庫 numpy.matlib 。此模塊的函數(shù)返回矩陣而不是返回 ndarray對象。一個(gè)m*n的矩陣是一個(gè)由m行(row)n列(column)元素排列成的矩形陣列。矩陣?yán)锏脑乜梢允菙?shù)字、符號或數(shù)學(xué)式。

      1. matlib.empty()

      函數(shù)返回一個(gè)新的矩陣,且不初始化元素。

      2、numpy.matlib.zeros()

      此函數(shù)返回以0填充的矩陣。

      3、numpy.matlib.ones()

      此函數(shù)返回以1填充的矩陣。

      4、numpy.matlib.eye()

      這個(gè)函數(shù)返回一個(gè)矩陣,對角線元素為 1,其他位置為零。

      5、numpy.matlib.identity()

      函數(shù)返回給定大小的單位矩陣。單位矩陣是主對角線元素都為 1 的方陣。

      6、numpy.matlib.rand()

      函數(shù)返回給定大小的填充隨機(jī)值的矩陣

      在這里需要注意的是,矩陣總是二維的,而ndarray是一個(gè)n維數(shù)組,兩個(gè)對象都是可以互換的,但是兩個(gè)對象并不是相同的。

      三、線性代數(shù)庫

      相信大家在學(xué)習(xí)線性代數(shù)的時(shí)候,都會(huì)覺得線性代數(shù)是非常難學(xué)的,線性代數(shù)就像一層硬紙,剛開始學(xué)習(xí)的時(shí)候是非常難以穿透的,但是只要認(rèn)真的學(xué)下去,那么穿過那個(gè)點(diǎn)之后呢就恍然大悟,當(dāng)然對線性代數(shù)掌握不是很好的人也沒事,numpy中有專門的庫numpy.linalg可以提供線性代數(shù)所需要的所有功能,我們可以先學(xué)習(xí)如何處理,然后在慢慢的去學(xué)習(xí)線性代數(shù)基礎(chǔ)知識(shí)。

      Numpy中提供的方法如下:

      • numpy.dot() 返回兩個(gè)數(shù)組的點(diǎn)積

      • numpy.vdot() 返回兩個(gè)向量的點(diǎn)積

      • numpy.inner() 返回一維數(shù)組的向量內(nèi)積

      • numpy.matmul() 返回兩個(gè)數(shù)組的矩陣乘積

      • numpy.linalg.det() 計(jì)算輸入矩陣的行列式

      • numpy.linalg.solve() 求解矩陣形式的線性方程的解

      • numpy.linalg.inv() 計(jì)算矩陣的逆

      接下來我們就一個(gè)一個(gè)方法開始學(xué)習(xí)如何處理線性代數(shù)的方法。

      1、numpy.dot()

      這個(gè)函數(shù)返回兩個(gè)數(shù)組的點(diǎn)積。對于二維向量,相當(dāng)于是矩陣乘法。對于一維數(shù)組,它是向量的內(nèi)積。對于 N 維數(shù)組,它是a的最后一個(gè)軸上的和與b的倒數(shù)第二個(gè)軸的乘積。

      1.1什么是矩陣乘法

      在這里我在帶領(lǐng)大家復(fù)習(xí)一下什么矩陣乘法,首先在百度中矩陣乘法的定義是這樣的:

      矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個(gè)矩陣的列數(shù)(column)和第二個(gè)矩陣的行數(shù)(row)相同時(shí)才有意義。一般單指矩陣乘積時(shí),指的便是一般矩陣乘積。一個(gè)m×n的矩陣就是m×n個(gè)數(shù)排成m行n列的一個(gè)數(shù)陣。由于它把許多數(shù)據(jù)緊湊的集中到了一起,所以有時(shí)候可以簡便地表示一些復(fù)雜的模型。

      這么看其實(shí)是比較復(fù)雜的,但是咱們分開來學(xué),也是很簡單的,假設(shè)A矩陣為m行p列,B矩陣為p行n列,矩陣相乘后,A*B=C,那么C矩陣就是m行n列,也就是說矩陣C的行數(shù)=矩陣A的行數(shù),矩陣C的列數(shù)=矩陣B的列數(shù),矩陣相乘就是A矩陣的行去乘以B矩陣的列。這么說可能還是有一些復(fù)雜,咱們看一下實(shí)例就能明白了。

      1.2實(shí)例


      在這個(gè)例子中,C矩陣的第一行第一個(gè)元素的結(jié)果是A矩陣的第一行B矩陣的第一列,也就是11+213=37,第一行第二個(gè)元素的結(jié)果為112+214=40。第二行第一個(gè)元素為311+413=85,第二行第二個(gè)元素為312+4*14=92。這么看的話是不是感覺就很清楚了。

      在Python的較新版本中還支持了直接使用@號作為矩陣的乘法,避免在調(diào)用numpy.dot()方法了。

      2、numpy.vdot()

      這個(gè)函數(shù)返回兩個(gè)向量的點(diǎn)積。如果第一個(gè)參數(shù)是復(fù)數(shù),那么它的共軛復(fù)數(shù)會(huì)用于計(jì)算。如果參數(shù)是多維數(shù)組,它會(huì)被展開。


      在這里看,點(diǎn)積也就是對應(yīng)的元素相乘,也就是111+212+313+414=130,這個(gè)方法要求兩個(gè)向量的元素相同不在乎行和列,如果不同的話則會(huì)報(bào)錯(cuò)。


      3、numpy.inner()

      這個(gè)函數(shù)返回一維數(shù)組的向量內(nèi)積。對于更高的維度,它返回最后一個(gè)軸上的乘積的和。

      3.1、一維數(shù)組


      結(jié)果等價(jià)于10+21+3*0

      3.2、二維數(shù)組



      上面的列子中,內(nèi)積的計(jì)算如下

      Array([[111+212,113+214],

      [311+412,313+414]])

      4、numpy.matmul()

      這個(gè)函數(shù)結(jié)果返回兩個(gè)數(shù)組的矩陣乘積。雖然它返回二維數(shù)組的正常乘積,但如果任一參數(shù)的維數(shù)大于 2,則將其視為存在于最后兩個(gè)索引的矩陣的棧,并進(jìn)行相應(yīng)廣播。另一方面,如果任一參數(shù)是一 維數(shù)組,則通過在其維度上附加 1 來將其提升為矩陣,并在乘法之后被去除。

      4.1、對于二維數(shù)組來說,它就是矩陣的乘法


      4.2、二維和一維的運(yùn)算


      計(jì)算的過程為:

      Np.matmul(a,b)=[111+212 312+412]

      Np.matmul(b,a)=[111+123 112+124]

      4.3、維度大于2的數(shù)組

      計(jì)算過程為

      Array([[[00+12,01+31],

      [20+36,21+33]],

      [[40+52,41+53],

      [60+72,61+73]]])

      5、numpy.linalg.det()

      這個(gè)函數(shù)計(jì)算輸入矩陣的行列式。行列式在線性代數(shù)中是非常有用的值。


      6、numpy.linalg.solve()

      函數(shù)給出了矩陣形式的線性方程的解。

      例如,考慮以下線性方程:

      x + y + z = 6

      2y + 5z = -4

      2x + 5y - z = 27

      可以使用矩陣表示為:

      1 2 3

      4 5 6 .$\left[\begin{matrix}x\y\z\end{matrix|\right]

      7 8 9

      $

      6

      -4

      27

      如果矩陣成為A、X和B,方程變?yōu)锽

      7、numpy.linalg.inv()

      這個(gè)函數(shù)是用來計(jì)算矩陣的逆。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多