Numpy基礎學習與總結

Numpy類型學習javascript

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代碼參考以下css

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代碼html

#數組元素的索引和切片
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])
相關文章
相關標籤/搜索