我见过this question,但希望减少从mask = array == value
mask = array([[[ True, True, True],
[False, True, True]],
[[False, True, True],
[False, True, True]],
[[False, False, True],
[False, True, True]]])
导致
where(mask) = (array([0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2]),
array([0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1]),
array([0, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2]))
我希望将其缩小为第一次出现True
array([[0, 1],
[1, 1],
[2, 1]])
但无法解决如何从numpy.where
的输出中解决这个问题。任何人都可以帮助我吗?
答案 0 :(得分:2)
实际上,它就像这样简单:
np.argmax(mask, 2)
示例:
In [15]: %paste
mask = array([[[ True, True, True],
[False, True, True]],
[[False, True, True],
[False, True, True]],
[[False, False, True],
[False, True, True]]])
## -- End pasted text --
In [16]: np.argmax(mask, 2)
Out[16]:
array([[0, 1],
[1, 1],
[2, 1]], dtype=int64)