版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章NumPy數(shù)值計(jì)算基礎(chǔ)NumPy簡介平面上有100個(gè)點(diǎn),求任意2點(diǎn)間的歐式距離,并將其保存。
1234567891
2
3
4
5
6
7
8
9
132數(shù)值計(jì)算的需求2006年,NumPyv1.0ndarrary:NumPy庫的心臟ndarray:多維數(shù)組,具有矢量運(yùn)算能力,且快速、節(jié)省空間可對整組數(shù)據(jù)進(jìn)行快速運(yùn)算的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)、線性代數(shù)、隨機(jī)數(shù)生成等功能importnumpyasnpNumPy簡介簡介1掌握NumPy矩陣與通用函數(shù)目錄掌握NumPy數(shù)組對象ndarray2利用NumPy進(jìn)行統(tǒng)計(jì)分析31.?dāng)?shù)組創(chuàng)建numpy.array(object,dtype=None,copy=True,order='K',subok=False,ndmin=0)掌握NumPy數(shù)組對象ndarray創(chuàng)建數(shù)組對象參數(shù)名稱說明object接收array_like。表示想要?jiǎng)?chuàng)建的數(shù)組。無默認(rèn)。dtype接收data-type。表示數(shù)組所需的數(shù)據(jù)類型。如果未給定,則選擇保存對象所需的最小類型。默認(rèn)為None。ndmin接收int。指定生成數(shù)組應(yīng)該具有的最小維數(shù)。默認(rèn)為None。2.?dāng)?shù)組屬性:ndarray(數(shù)組)是存儲(chǔ)單一數(shù)據(jù)類型的多維數(shù)組。掌握NumPy數(shù)組對象ndarray創(chuàng)建數(shù)組對象
屬性說明ndim返回int。表示數(shù)組的維數(shù)shape返回tuple。表示數(shù)組的尺寸,對于n行m列的矩陣,形狀為(n,m)size返回int。表示數(shù)組的元素總數(shù),等于數(shù)組形狀的乘積dtype返回data-type。描述數(shù)組中元素的類型itemsize返回int。表示數(shù)組的每個(gè)元素的大小(以字節(jié)為單位)。創(chuàng)建數(shù)組并查看數(shù)組屬性掌握NumPy數(shù)組對象ndarray創(chuàng)建數(shù)組對象In[1]:importnumpyasnp#導(dǎo)入NumPy庫arr1=np.array([1,2,3,4])#創(chuàng)建一維數(shù)組print('創(chuàng)建的數(shù)組為:',arr1)Out[1]:創(chuàng)建的數(shù)組為:
[1234]In[2]:arr2=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])#創(chuàng)建二維數(shù)組print('創(chuàng)建的數(shù)組為:\n',arr2)Out[2]:創(chuàng)建的數(shù)組為:[[1234][4567][78910]]In[3]:print('數(shù)組維度為:',arr2.shape)#查看數(shù)組結(jié)構(gòu)Out[3]:數(shù)組維度為:
(3,4)In[4]:print('數(shù)組維度為:',arr2.dtype)#查看數(shù)組類型Out[4]:數(shù)組維度為:
int32In[5]:print('數(shù)組元素個(gè)數(shù)為:',arr2.size)#查看數(shù)組元素個(gè)數(shù)Out[5]:數(shù)組元素個(gè)數(shù)為:
12In[6]:print('數(shù)組每個(gè)元素大小為:',arr2.itemsize)#查看數(shù)組每個(gè)元素大小Out[6]:數(shù)組每個(gè)元素大小為:
4重新設(shè)置數(shù)組的shape屬性使用arange函數(shù)創(chuàng)建數(shù)組掌握NumPy數(shù)組對象ndarray創(chuàng)建數(shù)組對象In[7]:arr2.shape=4,3#重新設(shè)置shapeprint('重新設(shè)置shape后的arr2為:',arr2)Out[7]:重新設(shè)置shape維度后的arr2為:[[123][445][677][8910]]In[8]:print('使用arange函數(shù)創(chuàng)建的數(shù)組為:\n',np.arange(0,1,0.1))Out[8]:使用arange函數(shù)創(chuàng)建的數(shù)組為:[0.0.10.20.30.40.50.60.70.80.9]使用linspace函數(shù)創(chuàng)建數(shù)組使用logspace函數(shù)創(chuàng)建等比數(shù)列掌握NumPy數(shù)組對象ndarray創(chuàng)建數(shù)組對象In[9]:print('使用linspace函數(shù)創(chuàng)建的數(shù)組為:',np.linspace(0,1,12))Out[9]:使用linspace函數(shù)創(chuàng)建的數(shù)組為:[0.0.09090909…1.]In[10]:print('使用logspace函數(shù)創(chuàng)建的數(shù)組為:',np.logspace(0,2,20))Out[10]:使用logspace函數(shù)創(chuàng)建的數(shù)組為:[1.1.274274991.62377674...,61.5848211178.47599704100.]使用zeros函數(shù)創(chuàng)建數(shù)組使用eye函數(shù)創(chuàng)建數(shù)組掌握NumPy數(shù)組對象ndarray創(chuàng)建數(shù)組對象In[11]:print('使用zeros函數(shù)創(chuàng)建的數(shù)組為:',np.zeros((2,3)))Out[11]:使用zeros函數(shù)創(chuàng)建的數(shù)組為:
[[0.0.0.][0.0.0.]]In[12]:print('使用eye函數(shù)創(chuàng)建的數(shù)組為:',np.eye(3))Out[12]:使用eye函數(shù)創(chuàng)建的數(shù)組為:
[[1.0.0.][0.1.0.][0.0.1.]]使用diag函數(shù)創(chuàng)建數(shù)組使用ones函數(shù)創(chuàng)建數(shù)組掌握NumPy數(shù)組對象ndarray創(chuàng)建數(shù)組對象In[13]:print('使用diag函數(shù)創(chuàng)建的數(shù)組為:',np.diag([1,2,3,4]))Out[13]:使用diag函數(shù)創(chuàng)建的數(shù)組為:
[[1000][0200][0030][0004]]In[14]:print('使用ones函數(shù)創(chuàng)建的數(shù)組為:',np.ones((5,3)))Out[14]:使用ones函數(shù)創(chuàng)建的數(shù)組為:
[[1.1.1.][1.1.1.][1.1.1.][1.1.1.][1.1.1.]]3.?dāng)?shù)組數(shù)據(jù)類型NumPy基本數(shù)據(jù)類型與其取值范圍(部分)掌握NumPy數(shù)組對象ndarray創(chuàng)建數(shù)組對象類型描述bool用一位存儲(chǔ)的布爾類型(值為TRUE或FALSE)inti由所在平臺(tái)決定其精度的整數(shù)(一般為int32或int64)int8整數(shù),范圍為?128至127int16整數(shù),范圍為?32768至32767int32…………數(shù)組數(shù)據(jù)類型轉(zhuǎn)換掌握NumPy數(shù)組對象ndarray創(chuàng)建數(shù)組對象In[15]:print('轉(zhuǎn)換結(jié)果為:',np.float64(42))#整型轉(zhuǎn)換為浮點(diǎn)型Out[15]:轉(zhuǎn)換結(jié)果為:42.0In[16]:print('轉(zhuǎn)換結(jié)果為:',8(42.0))#浮點(diǎn)型轉(zhuǎn)換為整型Out[16]:轉(zhuǎn)換結(jié)果為:42In[17]:print('轉(zhuǎn)換結(jié)果為:',np.bool(42))#整型轉(zhuǎn)換為布爾型Out[17]:轉(zhuǎn)換結(jié)果為:TrueIn[18]:print('轉(zhuǎn)換結(jié)果為:',np.bool(0))#整型轉(zhuǎn)換為布爾型Out[18]:轉(zhuǎn)換結(jié)果為:FalseIn[19]:print('轉(zhuǎn)換結(jié)果為:',np.float(True))#布爾型轉(zhuǎn)換為浮點(diǎn)型Out[19]:轉(zhuǎn)換結(jié)果為:1.0In[20]:print('轉(zhuǎn)換結(jié)果為:',np.float(False))#布爾型轉(zhuǎn)換為浮點(diǎn)型Out[20]:轉(zhuǎn)換結(jié)果為:0.0無約束條件下生成隨機(jī)數(shù)生成服從均勻分布的隨機(jī)數(shù)掌握NumPy數(shù)組對象ndarray生成隨機(jī)數(shù)In[25]:print('生成的隨機(jī)數(shù)組為:',np.random.random(100))Out[25]:生成的隨機(jī)數(shù)組為:[0.153431840.515815850.07228451...0.244183160.925105450.57507965]In[26]:print('生成的隨機(jī)數(shù)組為:\n',np.random.rand(10,5))Out[26]:生成的隨機(jī)數(shù)組為:[[0.398304910.940113940.599749230.444538940.65451838]...[0.14685440.829729890.580111150.451576670.32422895]]生成服從正態(tài)分布的隨機(jī)數(shù)生成給定上下范圍的隨機(jī)數(shù),如創(chuàng)建一個(gè)最小值不低于2、最大值不高于10的2行5列數(shù)組掌握NumPy數(shù)組對象ndarray生成隨機(jī)數(shù)In[27]:print('生成的隨機(jī)數(shù)組為:\n',np.random.randn(10,5))Out[27]:生成的隨機(jī)數(shù)組為:[[-0.605719680.39034908-1.633155130.02783885-1.84139301]...,[-0.275004871.417112620.66359670.35486644-0.26700703]]In[27]:print('生成的隨機(jī)數(shù)組為:\n',np.random.randn(10,5))Out[27]:生成的隨機(jī)數(shù)組為:[[-0.605719680.39034908-1.633155130.02783885-1.84139301]...,[-0.275004871.417112620.66359670.35486644-0.26700703]]random模塊常用隨機(jī)數(shù)生成函數(shù)掌握NumPy數(shù)組對象ndarray生成隨機(jī)數(shù)函數(shù)說明seed確定隨機(jī)數(shù)生成器的種子。permutation返回一個(gè)序列的隨機(jī)排列或返回一個(gè)隨機(jī)排列的范圍。shuffle對一個(gè)序列進(jìn)行隨機(jī)排序。binomial產(chǎn)生二項(xiàng)分布的隨機(jī)數(shù)。normal產(chǎn)生正態(tài)(高斯)分布的隨機(jī)數(shù)。beta產(chǎn)生beta分布的隨機(jī)數(shù)。chisquare產(chǎn)生卡方分布的隨機(jī)數(shù)。gamma產(chǎn)生gamma分布的隨機(jī)數(shù)。uniform產(chǎn)生在[0,1)中均勻分布的隨機(jī)數(shù)。掌握NumPy數(shù)組對象ndarray問題回顧1.一維數(shù)組的索引掌握NumPy數(shù)組對象ndarray通過索引訪問數(shù)組8.55.42.53.410.18.90.70123456-7-6-5-4-3-2-1Array:正序索引:逆序索引:1.一維數(shù)組的索引掌握NumPy數(shù)組對象ndarray通過索引訪問數(shù)組In[29]:arr=np.arange(10)print('索引結(jié)果為:',arr[5])#用整數(shù)作為下標(biāo)可以獲取數(shù)組中的某個(gè)元素Out[29]:索引結(jié)果為:
5In[30]:print('索引結(jié)果為:',arr[3:5])#用范圍作為下標(biāo)獲取數(shù)組的一個(gè)切片,包括arr[3]不包括arr[5]Out[30]:索引結(jié)果為:
[34]In[31]:print('索引結(jié)果為:',arr[:5])#省略開始下標(biāo),表示從arr[0]開始Out[31]:索引結(jié)果為:
[01234]In[32]:print('索引結(jié)果為:',arr[-1])#下標(biāo)可以使用負(fù)數(shù),-1表示從數(shù)組后往前數(shù)的第一個(gè)元素Out[32]:索引結(jié)果為:92.多維數(shù)組的索引掌握NumPy數(shù)組對象ndarray通過索引訪問數(shù)組In[36]:arr=np.array([[1,2,3,4,5],[4,5,6,7,8],[7,8,9,10,11]])print('創(chuàng)建的二維數(shù)組為:',arr)Out[36]:創(chuàng)建的二維數(shù)組為:
[[12345][45678][7891011]]In[37]:print('索引結(jié)果為:',arr[0,3:5])#索引第0行中第3和4列的元素Out[37]:索引結(jié)果為:
[45]2.多維數(shù)組的索引掌握NumPy數(shù)組對象ndarray通過索引訪問數(shù)組In[38]:#索引第2和3行中第3~5列的元素print('索引結(jié)果為:',arr[1:,2:])Out[38]:索引結(jié)果為:
[[678][91011]]In[39]:print('索引結(jié)果為:',arr[:,2])#索引第2列的元素Out[39]:索引結(jié)果為:
[369]2.多維數(shù)組的索引使用整數(shù)和布爾值索引訪問數(shù)據(jù)掌握NumPy數(shù)組對象ndarray通過索引訪問數(shù)組In[40]:#從兩個(gè)序列的對應(yīng)位置取出兩個(gè)整數(shù)來組成下標(biāo):arr[0,1],arr[1,2],arr[2,3]print('索引結(jié)果為:',arr[[(0,1,2),(1,2,3)]])Out[40]:索引結(jié)果為:
[2610]In[41]:print('索引結(jié)果為:',arr[1:,(0,2,3)])#索引第2、3行中第0、2、3列的元素Out[41]:索引結(jié)果為:
[[467][7910]]In[42]:mask=np.array([1,0,1],dtype=np.bool)#mask是一個(gè)布爾數(shù)組,它索引第1、3行中第2列的元素print('索引結(jié)果為:',arr[mask,2])Out[42]:索引結(jié)果為:
[39]n=100#樣本個(gè)數(shù)x=np.linspace(1,100,n)#樣本的橫坐標(biāo)y=np.linspace(1,100,n)#樣本的縱坐標(biāo)dist=np.zeros([n,n])#初始距離矩陣foriinrange(n):forjinrange(n):dist[i,j]=np.sqrt((x[i]-x[j])**2+(y[i]-y[j])**2)#計(jì)算歐式距離掌握NumPy數(shù)組對象ndarray完成任務(wù)改變數(shù)組形狀掌握NumPy數(shù)組對象ndarray變換數(shù)組的形態(tài)In[43]:arr=np.arange(12)#創(chuàng)建一維數(shù)組print('創(chuàng)建的一維數(shù)組為:',arr)Out[43]:創(chuàng)建的一維數(shù)組為:
[01234567891011]In[44]:print('新的一維數(shù)組為:',arr.reshape(3,4))#設(shè)置數(shù)組的形狀Out[44]:新的一維數(shù)組為:
[[0123][4567][891011]]In[45]:print('數(shù)組維度為:',arr.reshape(3,4).ndim)#查看數(shù)組維度Out[45]:數(shù)組維度為:
2使用ravel函數(shù)展平數(shù)組掌握NumPy數(shù)組對象ndarray變換數(shù)組的形態(tài)In[46]:arr=np.arange(12).reshape(3,4)print('創(chuàng)建的二維數(shù)組為:',arr)Out[46]:創(chuàng)建的二維數(shù)組為:
[[0123][4567][891011]]In[47]:print('數(shù)組展平后為:',arr.ravel())Out[47]:數(shù)組展平后為:
[01234567891011]使用flatten函數(shù)展平數(shù)組掌握NumPy數(shù)組對象ndarray變換數(shù)組的形態(tài)In[48]:print('數(shù)組展平為:',arr.flatten())#橫向展平Out[48]:數(shù)組展平為:[01234567891011]In[49]:print('數(shù)組展平為:',arr.flatten('F'))#縱向展平Out[49]:數(shù)組展平為:[04815926103711]組合數(shù)組使用hstack函數(shù)實(shí)現(xiàn)數(shù)組橫向組合:np.hstack((arr1,arr2))使用vstack函數(shù)實(shí)現(xiàn)數(shù)組縱向組合:np.vstack((arr1,arr2))使用concatenate函數(shù)實(shí)現(xiàn)數(shù)組橫向組合:np.concatenate((arr1,arr2),axis=1))使用concatenate函數(shù)實(shí)現(xiàn)數(shù)組縱向組合:np.concatenate((arr1,arr2),axis=0))掌握NumPy數(shù)組對象ndarray變換數(shù)組的形態(tài)切割數(shù)組使用hsplit函數(shù)實(shí)現(xiàn)數(shù)組橫向分割:np.hsplit(arr1,2)使用vsplit函數(shù)實(shí)現(xiàn)數(shù)組縱向分割:np.vsplit(arr,2)使用split函數(shù)實(shí)現(xiàn)數(shù)組橫向分割:np.split(arr,2,axis=1)使用split函數(shù)實(shí)現(xiàn)數(shù)組縱向分割:np.split(arr,2,axis=0)掌握NumPy數(shù)組對象ndarray變換數(shù)組的形態(tài)1掌握NumPy矩陣與通用函數(shù)目錄掌握NumPy數(shù)組對象ndarray2利用NumPy進(jìn)行統(tǒng)計(jì)分析3創(chuàng)建與組合矩陣使用mat函數(shù)創(chuàng)建矩陣:matr1=np.mat("123;456;789")使用matrix函數(shù)創(chuàng)建矩陣:matr2=np.matrix([[1,
2,3],[4,5,6],[7,8,9]])使用bmat函數(shù)合成矩陣:np.bmat("arr1arr2;arr1arr2")掌握NumPy矩陣與通用函數(shù)創(chuàng)建NumPy矩陣矩陣的運(yùn)算矩陣與數(shù)相乘:matr1*3矩陣相加減:matr1±m(xù)atr2矩陣相乘:matr1*matr2矩陣對應(yīng)元素相乘:np.multiply(matr1,matr2)掌握NumPy矩陣與通用函數(shù)創(chuàng)建NumPy矩陣屬性說明T返回自身的轉(zhuǎn)置H返回自身的共軛轉(zhuǎn)置I返回自身的逆矩陣A返回自身數(shù)據(jù)的2維數(shù)組的一個(gè)視圖通用函數(shù)(universalfunction),是一種能夠?qū)?shù)組中所有元素進(jìn)行操作的函數(shù)。四則運(yùn)算:加(+)、減(-)、乘(*)、除(/)、冪(**)。數(shù)組間的四則運(yùn)算表示對每個(gè)數(shù)組中的元素分別進(jìn)行四則運(yùn)算,所以形狀必須相同。比較運(yùn)算:>、<、==、>=、<=、!=。比較運(yùn)算返回的結(jié)果是一個(gè)布爾數(shù)組,每個(gè)元素為每個(gè)數(shù)組對應(yīng)元素的比較結(jié)果。邏輯運(yùn)算:np.any函數(shù)表示邏輯“or”,np.all函數(shù)表示邏輯“and”。運(yùn)算結(jié)果返回布爾值。掌握NumPy矩陣與通用函數(shù)認(rèn)識ufunc函數(shù)ufunc函數(shù)的廣播機(jī)制廣播(broadcasting)是指不同形狀的數(shù)組之間執(zhí)行算術(shù)運(yùn)算的方式。需要遵循4個(gè)原則。讓所有輸入數(shù)組都向其中shape最長的數(shù)組看齊,shape中不足的部分都通過在前面加1補(bǔ)齊。輸出數(shù)組的shape是輸入數(shù)組shape的各個(gè)軸上的最大值。如果輸入數(shù)組的某個(gè)軸和輸出數(shù)組的對應(yīng)軸的長度相同或者其長度為1時(shí),這個(gè)數(shù)組能夠用來計(jì)算,否則出錯(cuò)。當(dāng)輸入數(shù)組的某個(gè)軸的長度為1時(shí),沿著此軸運(yùn)算時(shí)都用此軸上的第一組值。掌握NumPy矩陣與通用函數(shù)認(rèn)識ufunc函數(shù)ufunc函數(shù)的廣播機(jī)制一維數(shù)組的廣播機(jī)制二維數(shù)組的廣播機(jī)制掌握NumPy矩陣與通用函數(shù)認(rèn)識ufunc函數(shù)1掌握NumPy矩陣與通用函數(shù)目錄掌握NumPy數(shù)組對象ndarray2利用NumPy進(jìn)行統(tǒng)計(jì)分析3NumPy文件讀寫主要有二進(jìn)制的文件讀寫和文件列表形式的數(shù)據(jù)讀寫兩種形式save函數(shù)是以二進(jìn)制的格式保存數(shù)據(jù)。np.save("../tmp/save_arr",arr)load函數(shù)是從二進(jìn)制的文件中讀取數(shù)據(jù)。np.load("../tmp/save_arr.npy")savez函數(shù)可以將多個(gè)數(shù)組保存到一個(gè)文件中。np.savez('../tmp/savez_arr',arr1,arr2)存儲(chǔ)時(shí)可以省略擴(kuò)展名,但讀取時(shí)不能省略擴(kuò)展名。利用NumPy進(jìn)行統(tǒng)計(jì)分析讀寫文件讀取文本格式的數(shù)據(jù)savetxt函數(shù)是將數(shù)組寫到某種分隔符隔開的文本文件中。np.savetxt("../tmp/arr.txt",arr,fmt="%d",delimiter=",")loadtxt函數(shù)執(zhí)行的是把文件加載到一個(gè)二維數(shù)組中。np.loadtxt("..
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分析儀器在液體食品質(zhì)量分析的應(yīng)用考核試卷
- 專業(yè)知識的學(xué)習(xí)與價(jià)值創(chuàng)造考核試卷
- 合成革的綠色生產(chǎn)與品牌建設(shè)考核試卷
- ??漆t(yī)院護(hù)理志愿者服務(wù)管理知識考核試卷
- 辦公室項(xiàng)目管理進(jìn)度控制考核試卷
- 印刷設(shè)備智能化生產(chǎn)計(jì)劃的設(shè)計(jì)考核試卷
- 食品創(chuàng)新與創(chuàng)意課程設(shè)計(jì)
- 機(jī)械制造課程設(shè)計(jì)緒論
- 鄭州環(huán)境監(jiān)測課程設(shè)計(jì)
- 身邊的科學(xué)主題課程設(shè)計(jì)
- 2024年采購代發(fā)貨合作協(xié)議范本
- 2024年業(yè)績換取股權(quán)的協(xié)議書模板
- 顳下頜關(guān)節(jié)疾?。谇活M面外科學(xué)課件)
- 工業(yè)自動(dòng)化設(shè)備維護(hù)保養(yǎng)指南
- 2024人教新版七年級上冊英語單詞英譯漢默寫表
- 《向心力》參考課件4
- 2024至2030年中國膨潤土行業(yè)投資戰(zhàn)略分析及發(fā)展前景研究報(bào)告
- 2024年深圳中考數(shù)學(xué)真題及答案
- 土方轉(zhuǎn)運(yùn)合同協(xié)議書
- Module 3 Unit 1 Point to the door(教學(xué)設(shè)計(jì))-2024-2025學(xué)年外研版(三起)英語三年級上冊
- 智能交通信號燈安裝合同樣本
評論
0/150
提交評論