免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Numpy中的讀取文件操作和高級(jí)庫

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

一、IO操作

Numpy 可以讀寫磁盤上的文本數(shù)據(jù)或二進(jìn)制數(shù)據(jù)。NumPy 為 ndarray 對象引入了一個(gè)簡單的文件格式:npy。npy 文件用于存儲(chǔ)重建 ndarray 所需的數(shù)據(jù)、圖形、dtype 和其他信息。現(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ù)字、符號(hào)或數(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的較新版本中還支持了直接使用@號(hào)作為矩陣的乘法,避免在調(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ì)算矩陣的逆。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python NumPy 線性代數(shù)函數(shù)詳解
NumPy
Python 數(shù)據(jù)分析——NumPy 函數(shù)庫
第 110 天:Numpy 中數(shù)組和矩陣的區(qū)別
“花書”的佐餐,你的線性代數(shù)筆記
NumPy的矩陣和線性代數(shù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服