Python NumPy中的数组索引没有意义

Python NumPy中的数组索引没有意义,python,numpy,indexing,Python,Numpy,Indexing,我有一个大小为28x28x6000的numpy数组。遵守以下规定: >>> X.shape (28, 28, 60000) >>> X[:][:][0].shape (28, 60000) X[:][:][0]不应该是大小为28x28的数组吗?我们包括前两个维度的每个组件(每个28个),但仅包括第三个维度的第0个条目 这是怎么回事?X[:]索引到所有维度的所有值,而不仅仅是第一个维度。所以X[:][:]与X 为了得到结果,只需编写X[:,:,0]就可以将切片

我有一个大小为28x28x6000的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)
您可以将
X[:]
X[:][:]
语句与


X[:,:,0]
是在这里切片的方法。
In [261]: (X[:] == X[:][:]).all()
Out[261]: True