我有两个 numpy 数组,一个比另一个大,但都具有相同的维数。
我想从较大的数组中获取与较小数组的大小相匹配的切片。 (从 0,0,0....
开始)
因此,假设大数组的形状为 (10,5,7)。
小数组的形状为 (10,4,6)。
我想从更大的数组中获取这个切片:
biggerArray[:10,:4,:6]
形状元组的长度可能会有所不同,我想对任意数量的维度执行此操作(两者将始终具有相同的维度数量)。
该怎么做?有没有一种方法可以将元组用作切片中的范围?
最佳答案
手动构造 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)]
您可能想在之后断言 result.shape == smallerArray.shape
,以防输入的形状与您想象的不一样。
关于python - 从 numpy 数组获取范围/切片另一个数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46008209/