Python序列中元素的訪問方式(一)Python字符串元素的訪問、切片與索引
Python序列中元素的訪問方式(二)Python列表元素的訪問、切片與索引
Python序列中元素的訪問方式(三)Python.numpy數組元素的訪問、切片與索引
Python序列中元素的訪問方式(四)Python數組和列表切片的區別
目錄
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]]]
本篇完,如有錯誤, 還請指出。