我能在不使用循环的情况下清除一个numpy数组吗?

6

这可能不是什么大事,但让我很难过的是要使用以下方式进行操作:

deltas = data[1:] - data[:-1]

替换为:

for i in range(len(deltas)):
        if deltas[i] < 0: deltas[i] = 0
        if deltas[i] > 100: deltas[i] = 0

对于这个特定的例子,有没有更好的方法来进行清洗?

第二个问题:如果清洗规则比这个例子更复杂或更简单怎么办?例如,我们可能只想将所有负数改为零。或者,我们可能正在进行更复杂的映射。

2个回答

9
import numpy as np
deltas=np.diff(data)
deltas[deltas<0]=0
deltas[deltas>100]=0

另外一种可能性,速度稍快的方法是:
deltas[(deltas<0) | (deltas>100)]=0

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接