Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自上次在NumPy中出现以来的计数_Python_Numpy - Fatal编程技术网

Python 自上次在NumPy中出现以来的计数

Python 自上次在NumPy中出现以来的计数,python,numpy,Python,Numpy,看似简单的问题:我想创建一个数组,给出自上次出现给定条件以来的计数。在此条件下,假设条件为a>0: in:[0,0,5,0,0,2,1,0,0] 输出:[0,0,0,1,2,0,0,1,2] 我假设第一步类似于np.cumsum(a>0),但不确定从哪里开始 编辑:应该澄清我希望不迭代地执行此操作。根据条件拆分数组,并使用剩余片段的长度以及数组中第一个和最后一个元素的条件状态。纯python解决方案: result = [] delta = 0 for val in [0, 0, 5, 0, 0

看似简单的问题:我想创建一个数组,给出自上次出现给定条件以来的计数。在此条件下,假设条件为a>0:

in:[0,0,5,0,0,2,1,0,0]

输出:[0,0,0,1,2,0,0,1,2]

我假设第一步类似于np.cumsum(a>0),但不确定从哪里开始


编辑:应该澄清我希望不迭代地执行此操作。

根据条件拆分数组,并使用剩余片段的长度以及数组中第一个和最后一个元素的条件状态。

纯python解决方案:

result = []
delta = 0
for val in [0, 0, 5, 0, 0, 2, 1, 0, 0]:
    delta += 1
    if val > 0:
        delta = 0            
    result.append(delta)
Numpy一号班轮: 给予

[0,1,0,1,2,0,0,1,2]

如果希望在开头有零,请显式将其改为零:

result[:numpy.nonzero(x)[0][0]] = 0
result[:numpy.nonzero(x)[0][0]] = 0