[英]Array indexing in NumPy not making sense
我有一個大小為28x28x60000
的numpy數組。 請注意以下事項:
>>> X.shape
(28, 28, 60000)
>>> X[:][:][0].shape
(28, 60000)
不應該X[:][:][0]
是一個大小為28x28
的數組? 我們包括前兩個維度(每個28個)的每個組件,但只包括第三個維度的第0個條目。
這里發生了什么?
你切錯了。 Slice X[:]
返回原始數組的副本。 因此,您的切片可以被解釋為X的第一個副本,然后是X的另一個副本,然后獲得具有28x60000形狀的第一個元素。 所以你需要調用X[:,:,0]
。 例:
import numpy as np
X = np.random.randn(28,28,60000)
In [257]: X[:,:,0].shape
Out[257]: (28, 28)
您可以將X[:]
和X[:][:]
語句與all
語句進行比較
In [261]: (X[:] == X[:][:]).all()
Out[261]: True
X[:]
索引所有維度的所有值,而不僅僅是第一個維度。 所以X[:][:]
與X
相同
要獲得結果,只需編寫X[:,:,0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.