【问题标题】:Extracting coordinates of region within matrix提取矩阵内区域的坐标
【发布时间】:2016-04-23 09:30:05
【问题描述】:

我有一个 3D 矩阵,其中我确定了一个“感兴趣的区域” - 一个边界框 - 我想要索引。

我有每个轴的上限和下限:

([x:13  y:5 z:21] [x:27 y:29 z:35])

但我不太确定如何获取此框中值的所有索引。我相信我目前用于这些的“命令”是我应该保留的 C 常规。

有没有使用python的简单方法来做到这一点?

谢谢!

【问题讨论】:

    标签: python numpy indexing


    【解决方案1】:

    使用numpy.where 查找满足条件的数组的索引。 numpy.where 返回一个元组,第一个元素包含索引。

    示例

    from __future__ import print_function
    import numpy
    
    a = numpy.arange(0, 100, 10) # 0, 10, 20, ...
    ind = numpy.where(a>30)[0]
    print(ind) # [4 5 6 7 8 9]
    

    【讨论】:

      【解决方案2】:

      你可以使用切片:

      my3d[13:28, 5:30, 21:36]
      

      请注意,上限是互斥的,因此可能需要将它们加一。

      【讨论】:

      • 谢谢!我正在尝试获取此范围内所有值的索引。对不起,如果问题不清楚!
      • 你能展示一个你想要的输出的例子吗?您是否只想要一个 (x, y, z) 元组列表,例如 [(13, 5, 21), (14, 5, 22) ... (28, 30, 36)]
      • 我找到了解决方案:),我想要的输出是 - ([13, 13,13....27,27,27], [5,5,5,..., 30, 30, 30], [21, 22, 23,..,34,35,36]) - 如果这有意义吗?最后,我只是将下限添加到提取框的索引中。不漂亮,但它有效!感谢您的帮助迈克
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 2016-11-09
      相关资源
      最近更新 更多