我有两个numpy数组,一个比另一个大,但都具有相同的维数。
我想从更大的数组中获得与较小数组大小相匹配的切片。 (从0,0,0....
开始)
所以,想象一下大阵列的形状(10,5,7) 小阵列有形状(10,4,6)。
我想从更大的阵列得到这片:
biggerArray[:10,:4,:6]
形状元组的长度可能会有所不同,我想对任意数量的维度进行处理(两者都将具有相同的维数)。
怎么做?有没有办法在元组中使用元组作为范围?
答案 0 :(得分:3)
手动构造slice
个对象的元组。 biggerArray[:10, :4, :6]
是biggerArray[(slice(10), slice(4), slice(6))]
的语法糖,所以:
biggerArray[tuple(map(slice, smallerArray.shape))]
或
biggerArray[tuple(slice(0, n) for n in smallerArray.shape)]
之后您可能需要assert result.shape == smallerArray.shape
,以防输入的形状不是您认为的那样。