我有一个3D数组,a,形状为a.shape = (10, 10, 10) 当进行切片时,维度会自动压缩,即 a[:,:,5].shape = (10, 10) 我想保留维数的数量,但也确保被压缩的维度是显示1的维度,即 a[:,:,5].shape = (10, 10, 1) 我想过重新转换数组并传递ndmin,但这只是将额外的维度添加到形状元组的开头,而不管切片来自数组a的哪个位置。
a[:,:,[5]].shape # (10,10,1) a[:,:,5] 是 基本切片 的一个例子。 a[:,:,[5]] 是 整数数组索引 的一个例子 -- 与基本切片相结合。当使用整数数组索引时,结果形状总是与广播索引数组形状相同。由于 [5](作为一个数组)的形状为 (1,), a[:,:,[5]] 最终形状为 (10,10,1)。
__getitem__
方法,所以我不愿意改变切片参数 - 请参见编辑 - Brendan__getitem__
可能会带来麻烦。要求对象的用户理解NumPy的规则并传递正确的索引是否更好呢? - unutbu