python基本語法練習

之前自學過python的相關語法內容,知識點過了一遍,發現印象不深刻,寫個博文加深印象。

1.一維字符串的截取操作

初始化一個個字符串,如下


>>> a = list((1,2,3,4,5,6,7,8,9,10,11,12,13,14))
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

>>> a[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

>>> a[1:4]
[2, 3, 4]

>>> a[:4]
[1, 2, 3, 4]

>>> a[4:]
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

>>> a[6:-1]
[7, 8, 9, 10, 11, 12, 13]
//這裏的-1表示從尾部開始數起的

>>> a[-3:-1]
[12, 13]          //感受下

>>> a[::2]
[1, 3, 5, 7, 9, 11, 13]

包含兩個冒號的樣式是怎麼回事呢?
第一個冒號隔開的這兩個部分和前面的意思是一樣的,就是指定數組中間元素的區間,後面那個部分則是指的一個步長


>>> a[::3]
[1, 4, 7, 10, 13]   //再來感受下

>>> a[::-1]
[14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

最後一個爲什麼呢?


>>> a[1:8:-1]
[]
>>> a[8:1:-1]
[9, 8, 7, 6, 5, 4, 3]

這樣就很明白了,最後步長爲-1表示方向。前面也有一個方向,a[1:8]表示從1到8,是正向;a[8:1]表示從8到1,是負向。步長爲正,表明正向,步長爲負,表明負向。

2.多維情況
多維的數組,我們藉助下numpy這個工具包來看看。

不多說,首先初始化!


>>> a = np.arange(16).reshape(4,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])


>>> a[1:3, 2:5]
array([[ 6,  7],
       [10, 11]])
>>> a[1:4, 2:5]
array([[ 6,  7],
       [10, 11],
       [14, 15]])
>>> a[2:4, 2:5]
array([[10, 11],
       [14, 15]])
>>> a[2:4, 1:5]
array([[ 9, 10, 11],
       [13, 14, 15]])

我們將逗號前面的稱作N1,後面的稱作N2。從以上的例子來看,N1切片的位置是行,N2切片的位置是列,a[1:3, 2:5],1:3表示行取大於1小於等於3的行,2:5表示列取大於2小於等於5的列。其它例子類似。

同理,如果把1:3改成1:3:2,和一維的意義類似,負數也是一樣。再看下面的例子

>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
>>> a[:, None]
array([[[ 0,  1,  2,  3]],

       [[ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11]],

       [[12, 13, 14, 15]]])

>>> a[:, None].shape
(4, 1, 4)
>>> a.shape
(4, 4)

爲什麼列的參數改成None,輸出的shape都變了,這裏大家要知道,None代表新增加一個維度,它有一個別稱叫newaxis,大家可以輸出一下numpy.newaxis就知道了,那麼這個別稱應該顧名思義了吧。再看下面的東西


>>> print np.newaxis
None
>>> a[:, : , None].shape
(4, 4, 1)
>>> a[:, None].shape
(4, 1, 4)
>>> a[..., None].shape
(4, 4, 1)
>>> a[None,:].shape
(1, 4, 4)

可以看到None放在哪一維,就會在哪一維上出現新的維度。同時可以看到三個點和兩個連續的點的效果一樣。

參考文獻:
1.http://shmilyaw-hotmail-com.iteye.com/blog/1782733
2.http://blog.csdn.net/z13653662052/article/details/78010654

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