Python序列中元素的訪問方式(三)Python.numpy數組元素的訪問、切片與索引

 

Python序列中元素的訪問方式(一)Python字符串元素的訪問、切片與索引

Python序列中元素的訪問方式(二)Python列表元素的訪問、切片與索引

Python序列中元素的訪問方式(三)Python.numpy數組元素的訪問、切片與索引

Python序列中元素的訪問方式(四)Python數組和列表切片的區別

 

目錄

1.一維數組

2.二維數組

3.多維數組


1.一維數組

一維數組的取值和字符串以及列表類似。

選取單個元素

HJL=[1,2,3,4,5,6,7,8,9,10]
print(HJL[3])    #4    選取數組中下標爲3的元素
print(HJL[-1])   #10  選取數組中最後一個元素

選取多個元素

HJL=[1,2,3,4,5,6,7,8,9,10]
#輸出從第一個開始到倒數第二個,不包括倒數第二個
print(HJL[:-2]) #  [1, 2, 3, 4, 5, 6, 7, 8]
#從倒數第二個開始輸出,直到最後,包括最後
print(HJL[-2:])  #[9, 10]
#輸出下標爲3和4的元素
print(HJL[3:5]) #[4, 5]

2.二維數組

假設有以下這個二維數組:

import numpy as np
HJL = np.array([
            [1,2,3,4],
            [4,5,6,7],
            [7,8,9,10]
            ])


"""獲取二維數組形狀"""
print(HJL.shape)  #(3, 4)

對二維數組的取值有兩種方式,第一種我把它叫做“二次索引”,就是使用兩個方括號,進行二次索引。單次索引的切片方式可以參照字符串或列表中的切片方式。比如說:

"""獲取其中某一個值"""
print(HJL[1][0])  #4 取出數組的第2行,然後再取第一個
"""獲取其中某一行"""
print(HJL[1][:]) # [4 5 6 7] 取出數組第2行,再取出全部
"""獲取某一行的其中幾個"""
print(HJL[1][0:2])  #[4 5]  取出數組第2行,再取出裏面的第1個和第2個
"""獲取其中某幾行"""
print(HJL[0:2][:])  #[[1 2 3 4],[4 5 6 7]]

另一種方式就是直接標明行索引和列索引,在一個方括號內,中間用逗號分隔。

"""獲取其中某一個值"""
print(HJL[1,0])  #4
"""獲取其中某一行"""
print(HJL[1,:])  #[4 5 6 7]
"""獲取某一行的其中幾個"""
print(HJL[1,0:2])  #[4 5]
"""獲取其中某幾行"""
print(HJL[0:2,:]) #[[1 2 3 4],[4 5 6 7]]

以上都是對行進行操作,如果我們要對“列”進行操作呢,比如取出某幾列,或者取出某幾行的某幾列呢?比如說我們需要取出第二列[2,5,8],這時候第一種“二次索引”方式就不好使了,print(HJL[:][1]) 得到的是[4 5 6 7],而不是我們需要的[2,5,8],這是因爲[:]取出所有行,[1]取出了所有行裏面的第一行。所以還是使用第二種直接標明行索引和列索引的方式比較方便。

print(HJL[:,1])  #[2 5 8]
#行全部取,列只取第二列

逗號兩邊的切片方式,和字符串列表的是類似的,寫成HJL[::,1]也是一樣的。

如果希望還是以列的方式顯示。

print(HJL[:,np.newaxis, 1])

"""
[[2]
 [5]
 [8]]
"""

或者說把逗號右邊這部分也寫成切片形式。

大致意思就是哪一維寫成切片的形式,哪一維就會有方括弧,如:print(HJL[:,1])  輸出[2 5 8],只有一維上是切片,因此也只有最外面的一維有方括弧,下面print( HJL[ :, 1:2] )  二維也是切片的形式,所以二維上也有方括弧。

print(HJL[:,1:2])  
"""
[[2]
 [5]
 [8]]
"""

3.多維數組

import numpy as np

HJL = np.array([
                [[1,2],
                [3,4]],

                [[5,6],
                 [7,8]]
                ])

其實和二維是一致的。在二維上,所謂的先取行再取列,其實就是先取第一維,再取第二維,擴展到多維就是一維一維的取下去。

print(HJL[1,0,1]) #6
#第一維上取第二個,就是[[5,6],[7,8]],第二維上取第一個,就是[5,6],第三維上取第二個,就是6

每一維都可以寫成切片的形式。出現方括弧的規律和上文一致。

print(HJL[1,0,1:2])  #[6]
print(HJL[1,0:1,1:2]) #[[6]]
print(HJL[1:2,0:1,1:2]) #[[[6]]]

本篇完,如有錯誤, 還請指出。

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