С использованием двумерного маскированного массива в Python, как лучше всего получить индекс первой и последней строк и столбцов, содержащих немаскированное значение?
import numpy as np
a = np.reshape(range(30), (6,5))
amask = np.array([[True, True, False, True, True],
[True, False, False, True, True],
[True, True, True, False, True],
[True, False, False, False, True],
[True, True, True, False, True],
[True, True, True, True, True]])
a = np.ma.masked_array(a, amask)
print a
# [[-- -- 2 -- --]
# [-- 6 7 -- --]
# [-- -- -- 13 --]
# [-- 16 17 18 --]
# [-- -- -- 23 --]
# [-- -- -- -- --]]
В этом примере яхотел бы получить:
(0, 4)
для оси 0 (поскольку первая строка с немаскированными значениями равна 0, а последняя - 4; шестая строка (строка 5) содержит только маскированныезначения) (1, 3)
для оси 1 (поскольку первый столбец с немаскированными значениями равен 1, а последний - 3 (1-й и 5-й столбцы содержат только маскированные значения)).
[Я думал о том, чтобы объединить numpy.ma.flatnotmasked_edges
и numpy.apply_along_axis
без какого-либо успеха ...]