簡體   English   中英

切片 3d Arrays

[英]Slicing 3d Arrays

我想切片 3D arrays 以僅打印第二個數組中每行的最后一個元素。

在我的 3D 陣列中:

np.random.seed(42)
M = np.random.randint(10, size=(2,2,10))
print(M)

我嘗試以如下方式訪問第二個數組的最后一個元素:

print(M[1::2])   ## which just prints me the whole 2nd Array
print(M[1::,2])  ## which gives me an error of index 2 being out of bounds

我了解第一個 print() 方法,例如:
1: # 選擇第二個數組
: # 選擇第二個數組的所有行
:2 # 選擇行的每個第二個索引並打印它

奇怪的是,它打印了整個數組,這讓我感到困惑。 第二個 print() 方法我希望至少單獨打印第二個索引,但我收到了該錯誤消息。

所以我嘗試了更多並想出了那個代碼:

print(M[1:,0:,::2])

它給了我想要的結果,但我無法閱讀代碼。 我明白
1: ## 選擇第二個數組
但是,0:,::2 讓我很困惑。 ::2 正在選擇我猜的每個第二個索引,但我仍然不明白我什么時候可以制作 ':' 什么時候不能。 或者切片過程中的“,”是什么意思。

在 numpy 中,操作符的工作方式如下:- [start_index:end_index:step]

這意味着當您索引 M[1:,0:,::2] 時,您實際索引的是從第一個維度的第一個索引( [1:] )開始的所有內容,然后是從第二個維度開始的所有內容( [0:] ),最后是步長為 2 的每個元素( [::2] )。

,用於分隔尺寸,所以我假設你真正想要做的是M[:,1,-1]來獲取每個第二個數組的最后一個元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM