1d NumPy数组中最后一个值的地址

tri*_*ook 3 python arrays numpy

我有一个1d阵列,零点分散在各处.想创建一个包含最后一个零位的第二个数组,如下所示:

>>> a = np.array([1, 0, 3, 2, 0, 3, 5, 8, 0, 7, 12])
>>> foo(a)
[0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3]
Run Code Online (Sandbox Code Playgroud)

是否有内置的NumPy函数或广播技巧来执行此操作而不使用for循环或其他迭代器?

NPE*_*NPE 8

>>> (a == 0).cumsum()
array([0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3])
Run Code Online (Sandbox Code Playgroud)