Numpy基础学习与总结
生活随笔
收集整理的這篇文章主要介紹了
Numpy基础学习与总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Numpy類型學習
1.數組的表示 ? ?
import numpy as np In [2]: #numpy核心是高維數組,庫中的ndarray支持多維數組,同時提供了數值運算,可對向量矩陣進行運算 In [5]: array1=np.array(range(6)) In [ ]: #array()函數創建一維數組 In [4]: print array1 #如果是python3使用print(array1) [0 1 2 3 4 5] In [6]: #查看數據結構 使用shape關鍵字 In [8]: array1.shape Out[8]: (6L,) In [13]: array1.shape=2,3 #修改array1變化成二位數組 In [15]: print array1 #輸出二維數組 [[0 1 2][3 4 5]] In [18]: array2=array1.reshape(2,3) #reshape()函數在array1數組的基礎上創建一個二維結構數組 In [19]: print array2 [[0 1 2][3 4 5]] In [20]: array2.shape Out[20]: (2L, 3L) In [ ]: #想改變2行3列的值 In [23]: array2[1,2]=88 In [24]: print array2 [[ 0 1 2][ 3 4 88]] In [ ]: #利用arange()函數生成數組 In [26]: array4=np.arange(13,1,-1)#1個參數是起始值,2個參數是結束值,第三個參數是步長,結果不包括結束值 In [27]: print array4 [13 12 11 10 9 8 7 6 5 4 3 2] In [29]: array4.shape=2,2,3 In [30]: print array4 [[[13 12 11][10 9 8]][[ 7 6 5][ 4 3 2]]] In [31]: array5=array4.reshape(3,2,2) In [32]: print array5 [[[13 12][11 10]][[ 9 8][ 7 6]][[ 5 4][ 3 2]]] In [ ]: arange()#函數創建的數組不包括最后一個值,如果想包括使用linspace()函數 In [33]: array6=np.linspace(1,12,12)#1個參數設置初始值,2個參數設置結束值,3個參數是元素的個數 In [34]: print array6 [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.] In [38]: print np.linspace(1,12,12) [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.] In [39]: array6.dtype #dtype函數查看數值元素數值類型 Out[39]: dtype('float64') In [ ]: #linspace()函數生成數組默認是浮點類型, #如果想創建整形數組,則增加dtype參數 In [44]: array7=np.linspace(1,12,12,dtype=int) In [45]: print array7 [ 1 2 3 4 5 6 7 8 9 10 11 12] In [46]: array7.dtype Out[46]: dtype('int32') In [ ]: #a=np.zeros()#zeros()生成全為0的數組 In [ ]: #b=np.ones()##ones()生成全為1的數組 In [ ]: #c=np.empty()##empty()生成給定維度無初始值數組 In [40]: a=np.zeros((4,5)) In [41]: print a [[ 0. 0. 0. 0. 0.][ 0. 0. 0. 0. 0.][ 0. 0. 0. 0. 0.][ 0. 0. 0. 0. 0.]] In [42]: b=np.ones((4,5)) In [43]: print b [[ 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1.]] In [48]: a.dtype Out[48]: dtype('float64') In [49]: b.dtype Out[49]: dtype('float64') In [51]: np.ones((2,5,4),dtype=np.int16) Out[51]: array([[[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1]],[[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1]]], dtype=int16) In [52]: np.empty((3,2)) Out[52]: array([[ 0., 0.],[ 0., 0.],[ 0., 0.]])?ipynb代碼參考如下
In?[1]: import numpy as np In?[2]: #numpy核心是高維數組,庫中的ndarray支持多維數組,同時提供了數值運算,可對向量矩陣進行運算 In?[5]: array1=np.array(range(6)) In?[?]: #array()函數創建一維數組 In?[4]: print array1 #如果是python3使用print(array1) [0 1 2 3 4 5] In?[6]: #查看數據結構 使用shape關鍵字 In?[8]: array1.shape Out[8]: (6L,) In?[13]: array1.shape=2,3 #修改array1變化成二位數組 In?[15]: print array1 #輸出二維數組 [[0 1 2][3 4 5]] In?[18]: array2=array1.reshape(2,3) #reshape()函數在array1數組的基礎上創建一個二維結構數組 In?[19]: print array2 [[0 1 2][3 4 5]] In?[20]: array2.shape Out[20]: (2L, 3L) In?[?]: #想改變2行3列的值 In?[23]: array2[1,2]=88 In?[24]: print array2 [[ 0 1 2][ 3 4 88]] In?[?]: #利用arange()函數生成數組 In?[26]: array4=np.arange(13,1,-1)#1個參數是起始值,2個參數是結束值,第三個參數是步長,結果不包括結束值 In?[27]: print array4 [13 12 11 10 9 8 7 6 5 4 3 2] In?[29]: array4.shape=2,2,3 In?[30]: print array4 [[[13 12 11][10 9 8]][[ 7 6 5][ 4 3 2]]] In?[31]: array5=array4.reshape(3,2,2) In?[32]: print array5 [[[13 12][11 10]][[ 9 8][ 7 6]][[ 5 4][ 3 2]]] In?[?]: arange()#函數創建的數組不包括最后一個值,如果想包括使用linspace()函數 In?[33]: array6=np.linspace(1,12,12)#1個參數設置初始值,2個參數設置結束值,3個參數是元素的個數 In?[34]: print array6 [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.] In?[38]: print np.linspace(1,12,12) [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.] In?[39]: array6.dtype #dtype函數查看數值元素數值類型 Out[39]: dtype('float64') In?[?]: #linspace()函數生成數組默認是浮點類型, #如果想創建整形數組,則增加dtype參數 In?[44]: array7=np.linspace(1,12,12,dtype=int) In?[45]: print array7 [ 1 2 3 4 5 6 7 8 9 10 11 12] In?[46]: array7.dtype Out[46]: dtype('int32') In?[?]: #a=np.zeros()#zeros()生成全為0的數組 In?[?]: #b=np.ones()##ones()生成全為1的數組 In?[?]: #c=np.empty()##empty()生成給定維度無初始值數組 In?[40]: a=np.zeros((4,5)) In?[41]: print a [[ 0. 0. 0. 0. 0.][ 0. 0. 0. 0. 0.][ 0. 0. 0. 0. 0.][ 0. 0. 0. 0. 0.]] In?[42]: b=np.ones((4,5)) In?[43]: print b [[ 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1.][ 1. 1. 1. 1. 1.]] In?[48]: a.dtype Out[48]: dtype('float64') In?[49]: b.dtype Out[49]: dtype('float64') In?[51]: np.ones((2,5,4),dtype=np.int16) Out[51]: array([[[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1]],[[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1],[1, 1, 1, 1]]], dtype=int16) In?[52]: np.empty((3,2)) Out[52]: array([[ 0., 0.],[ 0., 0.],[ 0., 0.]])? ??
2.Numpy數組元素的基本操作
#數組元素的索引和切片 In [2]: import numpy as np In [4]: #array[start:end:step],返回值是索引值為start到end-1之間 #并且索引值與start之差可以被step整除的連續對象 In [ ]: #如果想提取一個元素,只有start的值,array[start] In [3]: a1=np.linspace(1,26,6,dtype=int) In [5]: a1 Out[5]: array([ 1, 6, 11, 16, 21, 26]) In [6]: a1[3]#提取a1中第4個元素 Out[6]: 16 In [8]: a1[1:3]#提取a1中連續幾個元素,不包括end位置值,這里指的是16 Out[8]: array([ 6, 11]) In [9]: a1[:5]#從起點開始不包括結尾的值取出來 Out[9]: array([ 1, 6, 11, 16, 21]) In [10]: a1[2:]#從指定位置2開始的所有元素的值取出來 Out[10]: array([11, 16, 21, 26]) In [12]: a1[-1]#取出最后一個元素的值 Out[12]: 26 In [13]: a1[3]#取出下標為3,即第4個元素的值 Out[13]: 16 In [14]: a1[:-1]#取出元素為負數的時候,表示從右往左向上取元素 Out[14]: array([ 1, 6, 11, 16, 21]) In [15]: a1[2:-1]#從2開始到最后一個數,但不包括最后一個數 Out[15]: array([11, 16, 21]) In [16]: a2= a1[0:3:1]#0表示索引,3表示結束索引,1表示步長 In [17]: a2 Out[17]: array([ 1, 6, 11]) In [18]: a1[0]=20 In [19]: a2[0] #更改a1的值,a2的值會發生相應改變,也就是說按切片取值賦值變量會發生改變 Out[19]: 20 In [20]: a1[[0,1,4]]#取出索引位置為0,1,4位置上的元素 Out[20]: array([20, 6, 21]) In [21]: a3=a1[[0,1,4]] In [22]: a3 Out[22]: array([20, 6, 21]) In [23]: a1[0]=90 In [25]: a3#更改a1的值a3不會發生改變,也就是按索引取值是不會改變賦值變量的值 Out[25]: array([20, 6, 21]) In [26]: ##針對二維數組的切片或索引取值 In [27]: na1=np.array(np.arange(24),dtype=int).reshape(4,6)#arange函數生成數組 In [29]: print na1 [[ 0 1 2 3 4 5][ 6 7 8 9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]] In [30]: na1.dtype Out[30]: dtype('int32') In [31]: #在第0行上,取索引值為0,1的元素,共兩行 In [ ]: #在第1行上,取索引值為1,2,3,4,5的元素,共56列 In [32]: na1[:2,1:] Out[32]: array([[ 1, 2, 3, 4, 5],[ 7, 8, 9, 10, 11]]) In [33]: #在第0軸上取出索引值為[2,3] In [ ]: #在第1軸上取索引值為[2,4] #na1[2,2],na1[3,4] In [36]: na1[[2,3],[3,4]] Out[36]: array([15, 22]) In [ ]: #在第0軸上取出索引值為一個范圍 In [ ]: #在第1軸上取出索引值數組 In [37]: na2=na1.reshape(2,3,4) In [38]: na2 Out[38]: array([[[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]]) In [39]: na2[(1,2,3)]1,2,3 #分別表示3個維度(維度計數均從0開始),2行3列1維 Out[39]: 23 In [43]: na2[1,2,3] Out[43]: 23 In [44]: #整形列表作為索引情況。如果提取三個維度的多個值,則可以在每一軸上分別定義一 #一個整形數組或者整形列表作為索引值,但是要保證各個維度上面的長度相等 In [ ]: #在0軸上索引為[1,1,0] In [ ]: #在1軸上索引為[0,1,0] In [ ]: #在2軸上索引為[2,3,0] In [45]: na2 Out[45]: array([[[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]]) In [46]: na2[[1,1,0],[0,1,0],[2,3,1]]#按照對應x,y,z查看(1,0,2)=14.(1,1,3)=19,(0,0,1)=1 Out[46]: array([14, 19, 1])?ipynb代碼
#數組元素的索引和切片 In?[2]: import numpy as np In?[4]: #array[start:end:step],返回值是索引值為start到end-1之間 #并且索引值與start之差可以被step整除的連續對象 In?[?]: #如果想提取一個元素,只有start的值,array[start] In?[3]: a1=np.linspace(1,26,6,dtype=int) In?[5]: a1 Out[5]: array([ 1, 6, 11, 16, 21, 26]) In?[6]: a1[3]#提取a1中第4個元素 Out[6]: 16 In?[8]: a1[1:3]#提取a1中連續幾個元素,不包括end位置值,這里指的是16 Out[8]: array([ 6, 11]) In?[9]: a1[:5]#從起點開始不包括結尾的值取出來 Out[9]: array([ 1, 6, 11, 16, 21]) In?[10]: a1[2:]#從指定位置2開始的所有元素的值取出來 Out[10]: array([11, 16, 21, 26]) In?[12]: a1[-1]#取出最后一個元素的值 Out[12]: 26 In?[13]: a1[3]#取出下標為3,即第4個元素的值 Out[13]: 16 In?[14]: a1[:-1]#取出元素為負數的時候,表示從右往左向上取元素 Out[14]: array([ 1, 6, 11, 16, 21]) In?[15]: a1[2:-1]#從2開始到最后一個數,但不包括最后一個數 Out[15]: array([11, 16, 21]) In?[16]: a2= a1[0:3:1]#0表示索引,3表示結束索引,1表示步長 In?[17]: a2 Out[17]: array([ 1, 6, 11]) In?[18]: a1[0]=20 In?[19]: a2[0] #更改a1的值,a2的值會發生相應改變,也就是說按切片取值賦值變量會發生改變 Out[19]: 20 In?[20]: a1[[0,1,4]]#取出索引位置為0,1,4位置上的元素 Out[20]: array([20, 6, 21]) In?[21]: a3=a1[[0,1,4]] In?[22]: a3 Out[22]: array([20, 6, 21]) In?[23]: a1[0]=90 In?[25]: a3#更改a1的值a3不會發生改變,也就是按索引取值是不會改變賦值變量的值 Out[25]: array([20, 6, 21]) In?[26]: ##針對二維數組的切片或索引取值 In?[27]: na1=np.array(np.arange(24),dtype=int).reshape(4,6)#arange函數生成數組 In?[29]: print na1 [[ 0 1 2 3 4 5][ 6 7 8 9 10 11][12 13 14 15 16 17][18 19 20 21 22 23]] In?[30]: na1.dtype Out[30]: dtype('int32') In?[31]: #在第0行上,取索引值為0,1的元素,共兩行 In?[?]: #在第1行上,取索引值為1,2,3,4,5的元素,共56列 In?[32]: na1[:2,1:] Out[32]: array([[ 1, 2, 3, 4, 5],[ 7, 8, 9, 10, 11]]) In?[33]: #在第0軸上取出索引值為[2,3] In?[?]: #在第1軸上取索引值為[2,4] #na1[2,2],na1[3,4] In?[36]: na1[[2,3],[3,4]] Out[36]: array([15, 22]) In?[?]: #在第0軸上取出索引值為一個范圍 In?[?]: #在第1軸上取出索引值數組 In?[37]: na2=na1.reshape(2,3,4) In?[38]: na2 Out[38]: array([[[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]]) In?[39]: na2[(1,2,3)]1,2,3 #分別表示3個維度(維度計數均從0開始),2行3列1維 Out[39]: 23 In?[43]: na2[1,2,3] Out[43]: 23 In?[44]: #整形列表作為索引情況。如果提取三個維度的多個值,則可以在每一軸上分別定義一 #一個整形數組或者整形列表作為索引值,但是要保證各個維度上面的長度相等 In?[?]: #在0軸上索引為[1,1,0] In?[?]: #在1軸上索引為[0,1,0] In?[?]: #在2軸上索引為[2,3,0] In?[45]: na2 Out[45]: array([[[ 0, 1, 2, 3],[ 4, 5, 6, 7],[ 8, 9, 10, 11]],[[12, 13, 14, 15],[16, 17, 18, 19],[20, 21, 22, 23]]]) In?[46]: na2[[1,1,0],[0,1,0],[2,3,1]]#按照對應x,y,z查看(1,0,2)=14.(1,1,3)=19,(0,0,1)=1 Out[46]: array([14, 19, 1])轉載于:https://www.cnblogs.com/jackchen-Net/p/6592474.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Numpy基础学习与总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eq,neq,gt,lt等表达式缩写
- 下一篇: jquery拓展插件开发