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 自上次在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
编辑:应该澄清我希望不迭代地执行此操作。根据条件拆分数组,并使用剩余片段的长度以及数组中第一个和最后一个元素的条件状态。纯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