【问题标题】:Get range/slice from numpy array the size of another array从numpy数组获取范围/切片另一个数组的大小
【发布时间】:2025-12-18 14:15:01
【问题描述】:

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

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

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

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

biggerArray[:10,:4,:6]  

形状元组的长度可能会有所不同,我想对任意数量的维度进行此操作(两者总是具有相同的维度数)。

如何做到这一点?有没有办法将元组用作切片中的范围?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

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