每行可以累积的最大值:
>>> arr
array([[1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5],
[1, 1, 2, 2, 2, 3, 2, 2, 3, 3, 3, 4, 4],
[3, 2, 1, 2, 1, 1, 2, 3, 4, 5, 4, 3, 2]])
>>> np.maximum.accumulate(arr, axis=1)
array([[1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5],
[1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4],
[3, 3, 3, 3, 3, 3, 3, 3, 4, 5, 5, 5, 5]])
然后,您可以轻松屏蔽非递增值:
>>> m_arr = np.maximum.accumulate(arr, axis=1)
>>> np.where(np.diff(m_arr, axis=1, prepend=0), arr, 0)
array([[1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 5, 0],
[1, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0],
[3, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 0, 0]])