关于python:从numpy数组获取另一个数组大小的范围/切片

Get range/slice from numpy array the size of another array

我有两个numpy数组,一个比另一个大,但两个数组的维数相同。

我想从大数组中得到一个与小数组大小匹配的切片。(从0,0,0....开始)

所以,假设大数组是有形状的(10,5,7)。小阵列的形状为(10,4,6)。

我想从更大的数组中得到这个切片:

1
biggerArray[:10,:4,:6]

形状元组的长度可能会有所不同,我想对任意数量的维度执行此操作(两个维度的数量始终相同)。

怎么做?有没有一种方法可以使用元组作为切片中的范围?


手工构造slice对象的元组。biggerArray[:10, :4, :6]biggerArray[(slice(10), slice(4), slice(6))]的句法糖,因此:

1
biggerArray[tuple(map(slice, smallerArray.shape))]

1
biggerArray[tuple(slice(0, n) for n in smallerArray.shape)]

之后,您可能需要执行assert result.shape == smallerArray.shape,以防输入形状不是您认为的形状。