Python-Numpy語法總結-數組的索引和切片

普通索引和切片

像列表一樣的索引和切片

a=np.arange(15).reshape(3,5)
a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
a[1][1]
6
a[[1,2]] #列表是不允許這樣切的
array([[ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

數組特有索引和切片方式

因爲數組對象比較工整,所以可以採用數組特有的索引和切片。

a[[0,1]] #相當於a[[0,1],:],即:0,1行的所有列
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
a[[0,1],[0,1]] #返回的結果爲[0,6],這個結果可能不是你想要的。
#這個的意思是返回一個一維數組,這個一維數組包含兩個數字。
#這兩個數字對應的原行索引是0,1,對應的原列索引是0,1
#這個方法不能截取第0,1行0,1列對應的4個數字。
array([0, 6])
a[0:2,2:5]
array([[2, 3, 4],
       [7, 8, 9]])
a[[0,1],0:2] #用列表表示行號,用:表示列號
array([[0, 1],
       [5, 6]])
a[0:2,[0,1]]#結果等同於a[[0,1],0:2]
a[[0,2]][:,[1,2,3]]#選取任意不連續的行和列的切片方式:0,2行的1,2,3列
array([[ 1,  2,  3],
       [11, 12, 13]])

布爾索引

a=np.array(["a","b","a","b"])
a
array(['a', 'b', 'a', 'b'], dtype='<U1')
a=="a" #會返回一個布爾數組,它的長度和a數組0維上的長度一樣。
array([ True, False,  True, False])
b=np.random.randint(1,10,(4,3))
b
array([[9, 3, 1],
       [6, 4, 4],
       [7, 6, 6],
       [5, 2, 5]])

進行布爾索引的時候,布爾值數組的長度必須和數組軸索引長度一致。

b[:,0]>3
array([ True,  True,  True,  True])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章