【问题标题】:Numpy: Get Boundary Corners of "Valid" RegionNumpy:获取“有效”区域的边界角
【发布时间】:2021-04-29 22:30:51
【问题描述】:

我有一个 n 维 numpy 布尔值数组。我想找到索引,以便能够将我的切片包含所有 True 值和尽可能少的 False 值切片到数组中。

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

【问题讨论】:

标签: python numpy linear-algebra


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多