Python學習筆記(二)——NumPy

Python可以用List當數組用,但是由於List的元素可以是任意對象,因此保存一個List需要保存所有指針和元素。非常消耗內存。

本文學習博客:用Python做科學計算 整理筆記,以待備用。

首先是NumPy函數庫導入

importnumpy as np

創建數組

array

使用array可以創建多維數組

a = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9,10]])

shape

使用shape可以獲得數組維數

a.shape
(3,4)

reshape

使用reshape以改變數組的尺寸

b=a.reshape((2,6))

但是要注意:這兩個數組共享內存,修改其中一個,另一個也將發生變化。

 

創建數組的專門函數

arange:指定開始值、終值(不包括)、步長

np.arange(0,10,1.5)
array([ 0. , 1.5,  3. ,  4.5, 6. ,  7.5,  9. ])

linspace:指定開始值、終值(包括)、元素個數的等差數列

np.linspace(0,10,7)
array([0., 1.66666667, 3.33333333, 5., 6.66666667, 8.33333333,10.)

logspace: 指定開始值、終值(包括)、元素個數的等比數列

np.logspace(0,1,7)
array([1., 1.46779927, 2.15443469, 3.16227766,4.64158883, 6.81292069, 10.])

存取元素

-整數序列

a=np.arange(10,1,-1)
b=a[4,4,4,-2]
b
array([6,6,6,3])

注意:b和a不共享內存,所以改變其中任一個,另一個不會跟着改變。


 

-布爾數組

收集數組中對應下標爲True的元素。

a=np.arange(5,0,-1)
a[np.array([True, True, True,False, False])]
array([5,4,3])

注意:

1.兩數組不共享內存。

2.只可對應於布爾數組,而不能是布爾列表a[ [True, True, True,False,False]]

否則輸出應爲

array([4,4,4,5,5])


結構數組

創建dtype對象,字典有兩個關鍵字:names,formats。

import numpy as np
people=np.dtype({
                 ‘names’:[‘name’,’ gender’]
                 ‘formats’:[‘S32’,’S32’]})
a=np.array([(‘LiuJingjing’,’Female’),(‘ChengYin’,’Male’)],dtype=people)

ufunc運算

x=np.linspace(0,np.pi,10)
t=np.sin(x,x)

這裏sin的第二個參數是用來存結果的,上式表明x已經被覆蓋了,與t的效果一樣。

 

廣播

廣播就是數組大小不同,讓他們看齊運算。

a=np.arange(10,70,10).reshape(-1,1)
b=np.arange(1,6)
c=a+b
c
array([[11, 12, 13, 14, 15],
       [21,22, 23, 24, 25],
       [31,32, 33, 34, 35],
       [41,42, 43, 44, 45],
       [51,52, 53, 54, 55],
       [61,62, 63, 64, 65]])


矩陣乘積

dot、inner、outer

其中dot做內積、inner最後一維做內積、outer展成列向量和行向量做矩陣乘積。

 

 

歡迎參與討論並關注本博客微博以及知乎個人主頁後續內容繼續更新哦~

轉載請您尊重作者的勞動,完整保留上述文字以及文章鏈接,謝謝您的支持!

 

 

發佈了54 篇原創文章 · 獲贊 86 · 訪問量 47萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章