Python筆記(五):Numpy使用

Numpy是處理矩陣、數組的一個工具,下面來看一下基本操作:

np.array(),直接將輸入的數組轉換成矩陣,打印一下,屬於ndarray,n維矩陣系列。

打出維數:array.ndim

打出形狀:array.shape

打出大小:array.size

1.創建array

區別在哪?換個方式:

np.array把原來的List,帶","的List換成了不帶逗號的ndarray,列表換成了數組,後面是不帶逗號的。

np.array()內部關鍵字:

定義類型:dtype = np.int64,

                  dtype = np.int32

                  dtype = np.float64(精確,佔空間)

                  dtype = np.float32(節省空間)

                  ......

         

多出來的小數點,float類型。

2.np.zeros((x,y))

x,行數,y,列數

3行4列的全0矩陣。

3.np.ones((x,y))

同上面一樣:

3行4列的全1矩陣。

4.np.arange(起始位,終止位,步長)

5.np.reshape((x,y))

重新規劃矩陣形狀,比如生成一個1行12列的矩陣,轉換成3行4列的矩陣:

這裏看到,首先arange,傳入一個參數時,默認x=0,步長爲1,

其次,np.xxx().xxxx()前後按順序來執行命令

6.numpy的簡單運算

簡單的+,-:

簡單的*與**:

**代表冪指數,

三角函數:

調用np.sin()  np.cos(),矩陣傳入括號內部。

其他函數類似。

7.輸出布爾值矩陣

比如,判斷一個矩陣中的元素是否小於某個數,輸出的也應是個布爾值的矩陣:

8.元素乘與矩陣乘

矩陣間的成法有兩種,一種是元素之間對應相稱,另一種是矩陣相乘:

分別爲c = a*b,   c = np.dot(a,b)

爲了方便,轉換成2*2矩陣形式:

9.0-1的隨機矩陣

np.random.random((x,y))

10.矩陣最大、最小、和

np.sum() 查看矩陣內部和

np.min() 查看矩陣內部最小值

np.max() 查看矩陣內部最大值

內部關鍵字:

axis:  axis = 1,逐行計算,返回逐行的結果矩陣,axis = 0 逐列計算,返回逐列結果矩陣

1是行,0是列。

11.矩陣索引

np.argmin(),索引矩陣最小值所在位置

這裏返回的,是0位,與7位,不是數值。

也可以根據a[x,y]  a[x]/a[x,:],a[:,y]  ,a[x,a:b],a[a:b,y]

(:  單獨一個冒號代表所在行或列的所有值)

如:a[:,3]代表第四列的所有值

a[x,y]:

a[x]a[x,:]:

這個是可以直接賦值的,創建一個新對象:

a[:,1]:

a[x,a:b]  第x+1行,的第a+1到b的值

12.平均值,中位數

np.mean() 平均值,

np.median(),中位數

13.累加

np.cumsum(),

14.逐位差

np.diff(),逐個計算兩個相鄰的差,返回矩陣

15.倒序

倒序,起始位置與終止位置互換,步長爲 -1

16.轉置

np.transpose()

[ ].T

以前的圖片旋轉,內部調用的也是這個,圖片上多附(角度)

還有一種,直接加T,可直接用於乘法,

17.區間修剪,np.clip()

在矩陣中,在某個區間內,規定最大值,最小值,剪掉沒有交集的部分

np.clip(a,a_min,a_max,out = None)

矩陣a 最大值 11,最小值4,現在規定剪刀的最大值爲9,最小值爲4,那麼,矩陣中超過9的一律剪平,全置爲9,4剛好爲最小

這次,最小值爲3,矩陣最小值爲4,沒有什麼可剪的。保持最小值爲4

18.循環

逐行輸出:for row in a :

                            print(row)

逐行輸出列:for row in a.T:

                          print(row)

逐個元素輸出,先看下np.flatten()

可以說flatten等於reshape的**-1,-1次方。

Ok,現在逐個輸出元素:

19.合併

np.vstack((a,b))  a,b上下合併

np.hstack((a,b)) a,b左右合併

np.concatenate((a,b,b,a),axis = 0/1),多個數列合併

20.數列與矩陣控制

始終區分不開什麼是數列,什麼是矩陣,

個人理解就是,一個[  ]裏面放數字叫做數列,兩個[  ],[  ]裏面放數字,那叫做兩個數列

數列外邊再套個[  ],如[   [    ]   ],這叫做一行矩陣,[[ ]   [ ] ]這叫做,1行2列矩陣

那麼如何把一行的數列轉換成一行矩陣呢?

提供一個方法,創建一個維度,newaxis,

a[newaxis,:]         newaxis這個關鍵字,直接就是在所在的位置,x或y創建了一個維度,對於一行數列,在行的位置上創建一個維度,那結果是一行矩陣,如果在列位置上創建一個維度,那結果是一列矩陣,又如果,行和列都創建了一個維度,那麼此行數列作爲一組數列保存在創建的新矩陣中。

簡單的方法,.reshape(),直接操作維度。

21.矩陣分割

np.split(ary,indices_or_sections,axis = 0/1)

axis = 1,把a矩陣的行分成2份

如果axis = 0:

有餘數,報錯,不能夠平分列,把2換成3,把列分成三份:

另一種方法:np.vsplit() 列分割v,

                      np.hsplit() 橫分割h

22.賦值與複製

在Python中,對變量的賦值,等號兩邊完全是一致的,包括變量的Id:

也就是說,改變後來的變量,對前面的變量都會有影響

看下np.copy():

對d中元素進行操作:

換個方式

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章