【发布时间】:2016-04-23 09:30:05
【问题描述】:
我有一个 3D 矩阵,其中我确定了一个“感兴趣的区域” - 一个边界框 - 我想要索引。
我有每个轴的上限和下限:
([x:13 y:5 z:21] [x:27 y:29 z:35])
但我不太确定如何获取此框中值的所有索引。我相信我目前用于这些的“命令”是我应该保留的 C 常规。
有没有使用python的简单方法来做到这一点?
谢谢!
【问题讨论】:
我有一个 3D 矩阵,其中我确定了一个“感兴趣的区域” - 一个边界框 - 我想要索引。
我有每个轴的上限和下限:
([x:13 y:5 z:21] [x:27 y:29 z:35])
但我不太确定如何获取此框中值的所有索引。我相信我目前用于这些的“命令”是我应该保留的 C 常规。
有没有使用python的简单方法来做到这一点?
谢谢!
【问题讨论】:
使用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]
【讨论】:
你可以使用切片:
my3d[13:28, 5:30, 21:36]
请注意,上限是互斥的,因此可能需要将它们加一。
【讨论】:
(x, y, z) 元组列表,例如 [(13, 5, 21), (14, 5, 22) ... (28, 30, 36)]?