其中一部分是根据 Nelson rules 检查数据系列和 Western Electric rules .
例如(Nelson 规则中的规则 2):检查一行中是否有九个(或更多)点位于均值的同一侧。
现在我可以通过遍历数组来简单地实现检查这样的规则。
- 但在我这样做之前,我会在这里检查 SO 是否 numpy/pandas 有办法在没有迭代的情况下做到这一点?
- 无论如何:实现上述检查的“numpy-ic”方法是什么?
最佳答案
import numpy as np
x = np.random.rand(100)
f = np.sign(x - x.mean())
c = np.cumsum(f)
d = c[9:] - c[:-9]
print np.max(d), np.min(d)
如果 np.max(d) == 9 或 np.min(d) == -9 那么一行中有九个(或更多)点位于均值的同一侧。
或者你可以使用下面的代码来计算每一行的长度:
np.diff(np.where(np.diff(np.r_[-2,f,-2]))[0])
关于python - 不使用迭代推理连续数据点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370349/