2017-09-01 121 views
0

我有两个numpy阵列,一个大于另一个,但都具有相同数量的维度。获取范围/切片从numpy阵列的大小另一个阵列

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

因此,想象大阵已经形成(10,5,7)。
而小阵已成形(10,4,6)。

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

biggerArray[:10,:4,:6] 

形状元组的长度可能会有所不同,我想这样做的任何数量的维度(都总是有相同数量的的尺寸)。

如何做到这一点?有没有办法使用元组作为片段的范围?

回答

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事后,公正的情况下输入的形状被你想过没有所以然来。

+0

太好了,'slice'对象正是我所需要的。 –