python - 不使用迭代推理连续数据点

标签 python numpy pandas spc

我在做SPC使用 numpy 进行分析/pandas .

其中一部分是根据 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/

相关文章:

python - 从 DateTimeIndex 的 1 列中减去另一列会引发 ValueErrors 和 TypeErrors

python - 转换为 Unix 时间时如何指定时区(UTC)? (Python)

python - 如何将数据框中拼写错误的字符串值匹配并替换为第二个数据框中拼写正确的字符串值?

Python:运行 os.system 后如何获取标准输出?

python 将列表转换为 numpy 数组,同时保留数字格式

python - 如何在所有列上使用 RobustScaler?

python - 使用序列创建的 numpy 数组

python - 字符串比较 : Actual newline is never recognized as "\n"

python - 从 Pandas 数据框中删除重复的列索引

python - 使用 str.extract 方法在 Pandas 中匹配子字符串