Python Numpy:获取“的边界角点”;“有效”;区域

Python Numpy:获取“的边界角点”;“有效”;区域,python,numpy,linear-algebra,Python,Numpy,Linear Algebra,我有一个布尔值的n维numpy数组。我希望找到能够切片到数组中的索引,我的切片包含所有真值,并尽可能少地包含假值 用较少的数学术语来说,基本上我有一个3D图像,我希望能够基于我定义的给定函数自动拍摄它(比如只关心标有绿色的部分)。最好的方法是什么?首选n维解决方案,以便我将来可以用于所有图像类型。一种可能的方法是使用获得真值的所有索引,然后使用每个维中的最小值和最大值来构造切片: def bounding_slices(a): indices = np.nonzero(a) #

我有一个布尔值的n维numpy数组。我希望找到能够切片到数组中的索引,我的切片包含所有真值,并尽可能少地包含假值


用较少的数学术语来说,基本上我有一个3D图像,我希望能够基于我定义的给定函数自动拍摄它(比如只关心标有绿色的部分)。最好的方法是什么?首选n维解决方案,以便我将来可以用于所有图像类型。

一种可能的方法是使用获得
真值的所有索引,然后使用每个维中的最小值和最大值来构造切片:

def bounding_slices(a):
    indices = np.nonzero(a)
    # indices is an tuple of arrays containing the indices of the non-zero elements
    # (False is interpreted as zero) with each array corresponding to one dimension
    slices = []
    for indices_in_dimension in indices:
      slices.append(slice(
          np.min(indices_in_dimension),  # start slice at lowest index in dimension
          np.max(indices_in_dimension) + 1  # end slice after (+ 1) highest index
      ))
    return slices

numpy获取值为true的索引:;where():合理吗?