Python之Numpy的基礎及進階函數(圖文),pythonnumpy
一樣,咱的電腦還是得先擁有Python,並且安裝了Numpy庫。有疑問的話可以看這裡呦~~~~
下面開講:
NumPy的主要對象是齊次多維陣列。它是一個元素表(通常是數字),並且都是相同類型,由正整數的元組索引。
其他暫且略過,咱主要說一些可以聽懂的並且有實際效用的。
首先,我們得建立有一個ndarry對象,簡單地介紹其中三種方法吧:
-
-
- data=[[1,2,3],[4,5,6]]
a=np.array(data)
-
-
- a=np.arange(15).reshape(3,5)
在這裡我們就用第三個作為例子接著往下講哈(我就不用再建立了哈哈)
ndarray對象的重要的屬性如下:
輸出ndarray的維度(軸數,也有人叫它等級,在Python世界中,維度數量被稱為等級),這裡的軸也叫座標軸。
這兩種寫法都是可以的,親試,下面的其他函數也是一樣的。
例如,array([1,2,1])是一個等級為1的數組,因為它具有一個座標軸,該軸的長度為3。
在上面的樣本中,該數組的排名為2(它是2維的)。第一維(軸)的長度為3,第二維的長度為5。
輸出數組的尺寸,即(n,m)。
數組元素的總數,即 n * m。
數組中元素的資料類型,可進行轉換。(這個一般預設float64 和 int32,你們可以自己多試試)
數組中每個元素的位元組大小。(例子中則為 int 32/8 = 4,相當於ndarray.dtype.itemsize)
該緩衝區包含數組的實際元素。(這個我們一般不用,我們都是用索引的QAQ)
還有好多,我就不一一了,懶。。。。。。
- np.zeros(10) #長度為10的0數組
- np.zeros((3,6)) #建立3行6列的0數組(注意有兩個括弧)
- np.ones(5)
- np.ones((3,4))
- np.arange(10)
- np.eye(3) # 3*3單位矩陣
- np.identity(3) # 3*3單位矩陣
- np.zeros_like(a) #建立與a相同行、列的全0矩陣
- np.ones_like(a) #建立與a相同行、列的全1矩陣
索引和切片類
- a1=a[0:1] ##這個切片的大有學問了,寫的話大概得另起一篇了,有空再說
- a[0:1]=1 ##a變化後,a1的值也隨之變化
- a1[0:1]=2 #a1變化後,a的值也隨之變化
- a1=a[0:1].copy() #完全拷貝,值變化不影響a (和上面對比一下你就清楚了)
計算類
- a*a #每個元素平方(這個強!!!挺好用的。)
- a*5 #每個元素乘以5
- a.mean() #資料均值
- a.sum() #數組和
- a.sum(axis=0) #按列求和
- a.sum(axis=1) #按行求和
- a.sort() #對a進行排序(這個也是好東西啊~~~)
- a.sort(1) #0按行排序,1按列排序
- np.sort(a,0) #a按行排序(本身不發生變化!!!!!!)
- x.dot(y) ##矩陣x與y相乘
- np.in1d(a,[2,3,6]) #value中的每一個值是否在[2,3,6]中(如果是,該值返回true,否則返回false.)
- np.in1d([2,3,6],a)
- np.in1d(x,y)
- np.intersect1d(x,y) #返回x和y中的交集,並返回有序結構
- np.union1d(x,y) #計算x,y的並集,並返回有序結構
- np.setdiff1d(x,y) #集合的差,即在x中且不在y中
- samples=np.random.normal(size=(4,4)) #產生4維常態分佈矩陣
- from numpy.linalg import * #計算與矩陣相關,行列式,矩陣的逆等
- np.linalg.det(samples) #矩陣行列式
- np.linalg.inv(samples) #矩陣求逆
- np.diag(samples) #返回矩陣對角線元素
- np.linalg.eig(samples) #返回矩陣特徵值和特徵向量
- np.save('some_a',a) #儲存檔案
- np.load("some_a.py") #讀取磁碟儲存資料
- a=np.loadtxt("code_public.txt",delimiter=',') #讀取文本資料
- arr=np.loadtxt("d:\code\arr.txt",delimiter=',') #讀取d盤資料
行吧,時間也差不多了,我都寫累了,相信你也看累了,是時候去 stzb 看看了。