NumPy中的数组索引没有意义

时间:2016-02-11 10:05:06

标签: python numpy indexing

我有一个大小为28x28x60000的numpy数组。请注意以下事项:

>>> X.shape
(28, 28, 60000)
>>> X[:][:][0].shape
(28, 60000)

不应该X[:][:][0]是一个大小为28x28的数组吗?我们包括前两个维度(每个28个)的每个组件,但只包括第三个维度的第0个条目。

这里发生了什么?

2 个答案:

答案 0 :(得分:6)

你切错了。切片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

答案 1 :(得分:3)

X[:]索引所有维度的所有值,而不仅仅是第一个维度。因此X[:][:]X

相同

要获得结果,只需撰写X[:,:,0]

即可