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

时间:2017-09-01 21:32:34

标签: python python-3.x numpy tuples slice

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

我想从更大的数组中获得与较小数组大小相匹配的切片。 (从0,0,0....开始)

所以,想象一下大阵列的形状(10,5,7) 小阵列有形状(10,4,6)。

我想从更大的阵列得到这片:

biggerArray[:10,:4,:6]  

形状元组的长度可能会有所不同,我想对任意数量的维度进行处理(两者都将具有相同的维数)。

怎么做?有没有办法在元组中使用元组作为范围?

1 个答案:

答案 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,以防输入的形状不是您认为的那样。