在numpy中删除维度时产生的数组形状

时间:2018-04-07 00:52:13

标签: python arrays numpy indexing slice

尝试理解numpy在超过2个维度的索引时如何选择元素。

import numpy as np
x = np.arange(24).reshape(2,3,4)
x[:,:,0].shape #(2, 3)

在编写x[:,:,0]时,我选择了"深度"中的所有元素,所有"行"和第一列。当我在视觉上思考这个时,我会认为numpy会返回一个形状为(2,3,1)的东西,但最后的尺寸会被丢弃。这是合理的,但numpy如何填充结果?即在这个例子中,为什么x[:,:,0]导致元素[0,12]形成第一列。试图弄清楚由于某种原因我目前无法理解的一般逻辑。

1 个答案:

答案 0 :(得分:1)

一般NumPy索引很复杂,但这仍然很容易。我一直认为,根据索引结果如何对索引原始数组进行思考会有所帮助。

x[:, :, 0]的结果是一个数组,对于任何索引ij

result[i, j] == x[i, j, 0]

同样,如果您将5D数组a索引为a[:, 1, :, 2, :],结果就是

result[i, j, k] == a[i, 1, j, 2, k]