Numpy類型學習javascript
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代碼參考以下css
import numpy as np
#numpy核心是高維數組,庫中的ndarray支持多維數組,同時提供了數值運算,可對向量矩陣進行運算
array1=np.array(range(6))
#array()函數建立一維數組
print array1 #若是是python3使用print(array1)
#查看數據結構 使用shape關鍵字
array1.shape
array1.shape=2,3 #修改array1變化成二位數組
print array1 #輸出二維數組
array2=array1.reshape(2,3) #reshape()函數在array1數組的基礎上建立一個二維結構數組
print array2
array2.shape
#想改變2行3列的值
array2[1,2]=88
print array2
#利用arange()函數生成數組
array4=np.arange(13,1,-1)#1個參數是起始值,2個參數是結束值,第三個參數是步長,結果不包括結束值
print array4
array4.shape=2,2,3
print array4
array5=array4.reshape(3,2,2)
print array5
arange()#函數建立的數組不包括最後一個值,若是想包括使用linspace()函數
array6=np.linspace(1,12,12)#1個參數設置初始值,2個參數設置結束值,3個參數是元素的個數
print array6
print np.linspace(1,12,12)
array6.dtype #dtype函數查看數值元素數值類型
#linspace()函數生成數組默認是浮點類型,
#若是想建立整形數組,則增長dtype參數
array7=np.linspace(1,12,12,dtype=int)
print array7
array7.dtype
#a=np.zeros()#zeros()生成全爲0的數組
#b=np.ones()##ones()生成全爲1的數組
#c=np.empty()##empty()生成給定維度無初始值數組
a=np.zeros((4,5))
print a
b=np.ones((4,5))
print b
a.dtype
b.dtype
np.ones((2,5,4),dtype=np.int16)
np.empty((3,2))
#數組元素的索引和切片 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代碼html
#數組元素的索引和切片
import numpy as np
#array[start:end:step],返回值是索引值爲start到end-1之間
#而且索引值與start之差能夠被step整除的連續對象
#若是想提取一個元素,只有start的值,array[start]
a1=np.linspace(1,26,6,dtype=int)
a1
a1[3]#提取a1中第4個元素
a1[1:3]#提取a1中連續幾個元素,不包括end位置值,這裏指的是16
a1[:5]#從起點開始不包括結尾的值取出來
a1[2:]#從指定位置2開始的全部元素的值取出來
a1[-1]#取出最後一個元素的值
a1[3]#取出下標爲3,即第4個元素的值
a1[:-1]#取出元素爲負數的時候,表示從右往左向上取元素
a1[2:-1]#從2開始到最後一個數,但不包括最後一個數
a2= a1[0:3:1]#0表示索引,3表示結束索引,1表示步長
a2
a1[0]=20
a2[0] #更改a1的值,a2的值會發生相應改變,也就是說按切片取值賦值變量會發生改變
a1[[0,1,4]]#取出索引位置爲0,1,4位置上的元素
a3=a1[[0,1,4]]
a3
a1[0]=90
a3#更改a1的值a3不會發生改變,也就是按索引取值是不會改變賦值變量的值
##針對二維數組的切片或索引取值
na1=np.array(np.arange(24),dtype=int).reshape(4,6)#arange函數生成數組
print na1
na1.dtype
#在第0行上,取索引值爲0,1的元素,共兩行
#在第1行上,取索引值爲1,2,3,4,5的元素,共56列
na1[:2,1:]
#在第0軸上取出索引值爲[2,3]
#在第1軸上取索引值爲[2,4]
#na1[2,2],na1[3,4]
na1[[2,3],[3,4]]
#在第0軸上取出索引值爲一個範圍
#在第1軸上取出索引值數組
na2=na1.reshape(2,3,4)
na2
na2[(1,2,3)]1,2,3 #分別表示3個維度(維度計數均從0開始),2行3列1維
na2[1,2,3]
#整形列表做爲索引狀況。若是提取三個維度的多個值,則能夠在每一軸上分別定義一
#一個整形數組或者整形列表做爲索引值,可是要保證各個維度上面的長度相等
#在0軸上索引爲[1,1,0]
#在1軸上索引爲[0,1,0]
#在2軸上索引爲[2,3,0]
na2
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