保持Numpy三维数组切片的维度

8 投票
1 回答
6345 浏览
提问于 2025-04-15 21:36

我有一个三维数组,a,它的形状是 a.shape = (10, 10, 10)

当我切片的时候,维度会自动被 squeezed,也就是说:

a[:,:,5].shape = (10, 10)

我想保持维度的数量不变,同时确保被压缩的那个维度显示为1,也就是说:

a[:,:,5].shape = (10, 10, 1)

我考虑过重新调整数组的形状并使用 ndmin,但这样做只会把额外的维度加到形状元组的开头,而不管切片是从数组 a 的哪个位置来的。

1 个回答

13

a[:,:,[5]].shape
# (10,10,1)

a[:,:,5] 是一个基本切片的例子。简单来说,这种方式可以让你从一个多维数组中提取出特定的部分。

a[:,:,[5]] 是一个整数数组索引的例子,这种方式可以让你用数字来选择数组中的元素,并且可以和基本切片结合使用。使用整数数组索引时,得到的结果形状总是和你用来索引的数组形状相同。因为 [5](作为一个数组)只有一个元素,所以它的形状是 (1,),因此 a[:,:,[5]] 最后得到的形状是 (10,10,1)

撰写回答