我有一個大小爲28x28x60000
的numpy數組。注意以下事項:數組索引NumPy沒有意義
>>> X.shape
(28, 28, 60000)
>>> X[:][:][0].shape
(28, 60000)
不宜X[:][:][0]
是大小28x28
的陣列?我們包括前兩個維度中的每個組件(每個維度28個),但僅包含第三個維度中的第0個維度。
這是怎麼回事?
我有一個大小爲28x28x60000
的numpy數組。注意以下事項:數組索引NumPy沒有意義
>>> X.shape
(28, 28, 60000)
>>> X[:][:][0].shape
(28, 60000)
不宜X[:][:][0]
是大小28x28
的陣列?我們包括前兩個維度中的每個組件(每個維度28個),但僅包含第三個維度中的第0個維度。
這是怎麼回事?
X[:]
將索引轉換爲所有維度的所有值,而不僅僅是第一個索引。所以X[:][:]
是相同的X
爲了讓您的結果,您只需編寫X[:,:,0]
您切片錯了。切片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)
您可以用all
In [261]: (X[:] == X[:][:]).all()
Out[261]: True
'X比較你
X[:]
和X[:][:]
語句[:,:0]'是在這裏切片的方式。 – cel